1. 程式人生 > >python sorted函式高階用法

python sorted函式高階用法

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)

在這裡插入圖片描述