python sorted函式高階用法
阿新 • • 發佈:2018-11-07
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)