1、入门
a = [20, 5, 6, 7, 8, 1]
res1 = sorted(a) # 正序排序
res2 = sorted(a, reverse=True) # 逆序排序
res3 = sorted(a, key=lambda item: -item) # 逆序排序
print("res1:", res1)
print("res2:", res2)
print("res3:", res3)
2、进阶
b = [('a', 1), ('b', 2), ('a', 3), ('b', 1)]
res1 = sorted(b, key=lambda item: item[1]) # 按照列表里面每个元祖的第二个值进行升序排序
# 按照列表里面每个元祖的第二个值升序排序,如果第二个值相同的时候,按照第一个值进行升序排序
res2 = sorted(b, key=lambda item: [item[1], item[0]])
# 按照列表里面每个元祖的第二个值降序排序,如果第二个值相同的时候,按照第一个值进行升序排序
res3 = sorted(b, key=lambda item: [-item[1], item[0]])
print("res1:", res1)
print("res2:", res2)
print("res3:", res3)
3、高级
c = [[20, {'a': 2}], [10, {'b': 2}], [20, {'a': 3}], [20, {'b': 2}]]
# 按照c里面每个子列表的第一个值大小进行降序排序
res1 = sorted(c, key=lambda item: -item[0])
# 按照c里面每个子列表的第二个值(字典)进行如下操作:
# 先对第二个值(字典)的值进行升序排序,如果值相同,则对其键进行升序排序
res2 = sorted(c, key=lambda item: [list(item[1].values())[0], list(item[1].keys())[0]])
# 先按照c里面每个子列表第一个值大小进行升序排序
# 如果第一个值大小相同,则对第二个值进行如下操作:
# 对第二个值(字典)的值进行降序排序,如果值相同,则对字典的键进行升序排序
res3 = sorted(c, key=lambda item: [item[0], -list(item[1].values())[0], list(item[1].keys())[0]])
print("res1:", res1)
print("res2:", res2)
print("res3:", res3)