如何使用Python对字典列表按照age字段进行排序
Python 字典列表按age字段排序实现方案
示例数据
user_list = [{"age":10,"name":"a"},{"age":11,"name":"b"},{"age":10,"name":"c"},{"age":11,"name":"d"}]
实现方法
方法1:生成新的排序后列表(不修改原数据)
使用Python内置的sorted()函数,会返回一个全新的排序后列表,原列表保持不变,适合需要保留原始数据的场景:
sorted_list = sorted(user_list, key=lambda x: x["age"]) # 输出结果:[{'age': 10, 'name': 'a'}, {'age': 10, 'name': 'c'}, {'age': 11, 'name': 'b'}, {'age': 11, 'name': 'd'}]
方法2:原地排序(修改原列表,性能更高)
使用列表自带的sort()方法,直接在原列表上做排序,不需要额外的内存空间存储新列表,适合数据量较大、不需要保留原始顺序的场景:
user_list.sort(key=lambda x: x["age"]) # 排序后原user_list的内容和上面方法1的sorted_list一致
扩展说明
- 默认排序规则为升序,如果需要按age降序排列,添加
reverse=True参数即可:sorted_list = sorted(user_list, key=lambda x: x["age"], reverse=True) - 如果age相同的情况下需要按name做二次排序,将key的返回值改为元组即可,支持多字段优先级排序:
# 先按age升序,age相同按name升序 sorted_list = sorted(user_list, key=lambda x: (x["age"], x["name"])) - 如果不能保证所有字典都存在
age字段,可以用get()方法设置默认值避免触发KeyError:# 没有age字段的元素默认按age=0排序,排在最前面 sorted_list = sorted(user_list, key=lambda x: x.get("age", 0))
内容的提问来源于stack exchange,提问作者Nookesh Karri
相关产品推荐
相关产品推荐

