Python排序
sorted函数
常用参数
sorted(iterable, key=None, reverse=False)
iterable:可迭代的对象比如列表list,元组tuple,字典dict等,也就是待排序的集合
key:用来进行比较的元素,可以是函数名或者lambda表达式,返回的是用来比较的元素,可以返回多个,则先按第一个排序,相等再按后面的。
reverse:默认按比较元素从小到大排序,reverse=True则反过来从大到小排序,也可以给比较元素前加负号。
举个🌰:
ID | 分数 | 评分人数 |
---|---|---|
4 | 9.86 | 4 |
2 | 8.79 | 6 |
1 | 6.02 | 4 |
3 | 8.79 | 6 |
规则:首先按分数从大到小排序,如果分数相等按照评分人数从大到小排序,如果评分人数相等按照ID从小到大排序
rank = [(4, 9.86, 4),(2, 8.79, 6),(1, 6.02, 4),(3, 8.79, 6)]
ranked = sorted(rank, key=lambda r: (-float(r[1]), -float(r[2]), float(r[0])))
ranked
# [(4, 9.86, 4), (2, 8.79, 6), (3, 8.79, 6), (1, 6.02, 4)]