欢迎光临散文网 会员登陆 & 注册

effective python读书笔记——sort的key参数

2021-11-19 09:03 作者:与时代脱轨的级数  | 我要投稿

#讨论排序:


class Tool:

    def __init__(self,name,weight):

        self.name=name

        self.weight=weight

    def __repr__(self):

        return f'({self.name} {self.weight})'

tools=[Tool('drill',4),Tool("circular",5),Tool('jack',40),Tool('Sander',4)]


#print(tools.sort())

#由类的对象构成的列表是没法用sort进行排序的,Tool中没有定义的排序方法

print('原始:')

print(tools)

tools.sort(key=lambda x:x.name.lower())#lower避免首大写字母的影响

print("依照name排序:")

print(tools)


#利用元组比较大小的特性,即先比较首个元素,相同再比较第二个元素,以此类推

tools.sort(key=lambda x:(x.weight,x.name.lower()),reverse=True)#均逆序

print("先依照weight排序,weight相同再依照name排序:")

print(tools)

#这样的缺点是要么都升序,要么都降序


#如果有其中一项指标是数字,可以填个负号取个巧

tools.sort(key=lambda x:(-x.weight,x.name.lower()))

print("数字优先逆序,字母正序:")

print(tools)


#实在不行,可以拆成两次来实现

print("数字优先,正序,其次字母逆序")

tools.sort(key=lambda x:x.name.lower(),reverse=True)

print(tools)

#首要指标放后面

tools.sort(key=lambda x:x.weight)

print(tools)

运行结果


effective python读书笔记——sort的key参数的评论 (共 条)

分享到微博请遵守国家法律