python:使用sorted()对列表中的字典进行排序
# 假设有一个包含多个字典的列表,每个字典代表一个人的信息
people = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# 按 age 字段升序排序
sorted_people = sorted(people, key=lambda x: x['age'])
print(sorted_people)
运行结果如下:

以上结果默认是按照升序进行排列的
如果需要按age从大到小排序,只需给sorted()添加reverse=True参数:
people = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# 按 age 字段降序排序
sorted_people_desc = sorted(people, key=lambda x: x['age'], reverse=True)
print(sorted_people_desc)
运行结果如下:

如果不需要保留原始列表,想要直接修改原列表,可以使用列表的sort()方法(该方法无返回值,直接修改原列表):
people = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
# 直接修改原始列表,按 age 升序排序
people.sort(key=lambda x: x['age'])
print(people) # 此时原列表已被排序
运行结果如下:

如果列表中可能存在缺少age键的字典,可使用x.get('age', 默认值)避免KeyError,例如:
people = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob'}, # 缺少 age 键
{'name': 'Charlie', 'age': 35}
]
# 用 get() 给缺少 age 的元素设置默认值 0
sorted_people = sorted(people, key=lambda x: x.get('age', 0))
print(sorted_people)
运行结果如下:


浙公网安备 33010602011771号