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)

运行结果如下:

posted @ 2025-12-29 15:10  chenlight  阅读(1)  评论(0)    收藏  举报  来源