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)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40438165/article/details/83377190
今日推荐