有这样一个包含很多个字典的列表info:
info = [
{'name': '王小一', 'age': 18, 'salary': 10000},
{'name': '张小二', 'age': 3, 'salary': 1000},
{'name': '刘小三', 'age': 27, 'salary': 1000},
{'name': '朱小四', 'age': 18, 'salary': 3000},
{'name': '李小五', 'age': 9, 'salary': 800},
{'name': '马小牛', 'age': 23, 'salary': 7000},
{'name': '赵小七', 'age': 19, 'salary': 800},
{'name': '钱小八', 'age': 67, 'salary': 500},
{'name': '孙小九', 'age': 18, 'salary': 6000},
{'name': '周小十', 'age': 32, 'salary': 4000},
{'name': '吴十一', 'age': 18, 'salary': 9800},
{'name': '郑十二', 'age': 12, 'salary': 0}
]
现在需要对字典按照 age
进行排序:
sorted(info, key=lambda x: x['age'])
排序以后的结果如下:
[{'age': 3, 'name': '张小二', 'salary': 1000},
{'age': 9, 'name': '李小五', 'salary': 800},
{'age': 12, 'name': '郑十二', 'salary': 0},
{'age': 18, 'name': '王小一', 'salary': 10000},
{'age': 18, 'name': '朱小四', 'salary': 3000},
{'age': 18, 'name': '孙小九', 'salary': 6000},
{'age': 18, 'name': '吴十一', 'salary': 9800},
{'age': 19, 'name': '赵小七', 'salary': 800},
{'age': 23, 'name': '马小牛', 'salary': 7000},
{'age': 27, 'name': '刘小三', 'salary': 1000},
{'age': 32, 'name': '周小十', 'salary': 4000},
{'age': 67, 'name': '钱小八', 'salary': 500}]
从排序后的结果可以看出,对于 age
为18的几个字典,他们的 salary
顺序还是混乱的。
那么有没有办法让相同age的字典,也按照salary升序排列呢?此时就可以把 age
和 salary
组合为一个元组共同作为排序的Key来实现:
sorted(info, key=lambda x: (x['age'], x['salary']))
排序以后的效果如下:
[{'age': 3, 'name': '张小二', 'salary': 1000},
{'age': 9, 'name': '李小五', 'salary': 800},
{'age': 12, 'name': '郑十二', 'salary': 0},
{'age': 18, 'name': '朱小四', 'salary': 3000},
{'age': 18, 'name': '孙小九', 'salary': 6000},
{'age': 18, 'name': '吴十一', 'salary': 9800},
{'age': 18, 'name': '王小一', 'salary': 10000},
{'age': 19, 'name': '赵小七', 'salary': 800},
{'age': 23, 'name': '马小牛', 'salary': 7000},
{'age': 27, 'name': '刘小三', 'salary': 1000},
{'age': 32, 'name': '周小十', 'salary': 4000},
{'age': 67, 'name': '钱小八', 'salary': 500}]