Python对字典列表按某个字段排序
是的,你可以使用 Python 的 sorted()
函数或列表的 sort()
方法根据字典中某个字段对字典列表进行排序。
方法一:使用 sorted() 函数(不改变原列表)
data = [{'name': 'Alice', 'age': 25},{'name': 'Bob', 'age': 20},{'name': 'Charlie', 'age': 30}
]# 按 age 从小到大排序
sorted_data = sorted(data, key=lambda x: x['age'])print(sorted_data)
# 输出: [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 30}]
方法二:使用 list.sort() 方法(原地排序,改变原列表)
data = [{'name': 'Alice', 'age': 25},{'name': 'Bob', 'age': 20},{'name': 'Charlie', 'age': 30}
]# 按 age 从小到大排序(原地排序)
data.sort(key=lambda x: x['age'])print(data)
# 输出: [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 25}, {'name': 'Charlie', 'age': 30}]
高级用法
- 降序排序:添加
reverse=True
参数
sorted_data = sorted(data, key=lambda x: x['age'], reverse=True)
- 多字段排序:当第一个字段相同时,按第二个字段排序
data = [{'name': 'Alice', 'age': 25, 'score': 90},{'name': 'Bob', 'age': 20, 'score': 85},{'name': 'Charlie', 'age': 25, 'score': 95},{'name': 'David', 'age': 20, 'score': 80}
]# 先按 age 排序,age 相同再按 score 排序
sorted_data = sorted(data, key=lambda x: (x['age'], x['score']))
- 使用 operator.itemgetter 替代 lambda(性能稍好)
from operator import itemgettersorted_data = sorted(data, key=itemgetter('age'))
这些方法都可以帮助你根据字典中的特定字段对字典列表进行排序。