- 代码实现:
complex_list = [{'name': 'Alice', 'age': 25,'score': 85}, {'name': 'Bob', 'age': 22,'score': 90}, {'name': 'Charlie', 'age': 28,'score': 80}]
sorted_list = sorted(complex_list, key=lambda x: (-x['age'], x['score']))
print(sorted_list)
sorted
排序灵活性运用方式:
sorted
函数的key
参数可以接受一个函数,这个函数定义了排序的依据。在这里,使用了一个匿名函数(lambda
函数)。
- 匿名函数
lambda x: (-x['age'], x['score'])
,表示对于列表中的每个字典元素x
,首先根据age
字段从大到小排序(通过在age
前加负号实现),如果age
相同,则根据score
字段从小到大排序。
- 背后原理:
sorted
函数在排序时,会对可迭代对象中的每个元素应用key
指定的函数,得到一个“键值”。
- 然后根据这些“键值”进行排序。由于这里返回的是一个元组
(-x['age'], x['score'])
,在Python中,元组比较是从左到右依次进行的,所以先比较-x['age']
实现按age
从大到小排序,若age
相同,再比较x['score']
实现按score
从小到大排序。