Effective Python:第14条 用sort方法的key参数来表示复杂的排序逻辑

内置的列表类型提供了名叫sort的方法,可以根据多项指标给list实例中的元素排序。在默认情况下,sort方法总是按照自然升序排列列表内的元素。

numbers = [3, 1, 4, 2, 5]
numbers.sort(reverse=True)  # 降序
print(numbers)
# 输出: [5, 4, 3, 2, 1]
numbers.sort()  # 生序
print(numbers)
# 输出: [1, 2, 3, 4, 5]

# 支持对字符串按字母表排序
fruits = ['banana', 'apple', 'orange', 'kiwi']
fruits.sort()
print(fruits)
# 输出: ['apple', 'banana', 'kiwi', 'orange']

如何需要针对对象的某个属性排序呢?

我们可以把这样的排序逻辑定义成函数,然后将这个函数传给sort方法的key参数。key所表示的函数本身应该带有一个参数,这个参数指代列表中有待排序的对象。

# 对元组列表按照某个元素进行排序
students = [('Alice', 19), ('Bob', 20), ('Charlie', 18)]
students.sort(key=lambda x: x[1])  # 按照年龄升序
print(students)
# 输出: [('Charlie', 18), ('Alice', 19), ('Bob', 20)]

# 对字典列表按照某个元素进行排序
students = [{'name': 'Alice', 'age': 19},
            {'name': 'Bob', 'age': 20},
            {'name': 'Charlie', 'age': 18}]
students.sort(key=lambda x: x['name'], reverse=True)  # 按照name降序
print(students)
# 输出: [{'name': 'Charlie', 'age': 18}, {'name': 'Bob', 'age': 20},
# {'name': 'Alice', 'age': 19}]

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值