python sorted函数高级用法

xiaoxiao2025-06-03  47

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)

转载请注明原文地址: https://www.6miu.com/read-5031174.html

最新回复(0)