Python对字典列表按某个字段排序

是的,你可以使用 Python 的 sorted() 函数或列表的 sort() 方法根据字典中某个字段对字典列表进行排序。

方法一:使用 sorted() 函数(不改变原列表)

python 复制代码
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() 方法(原地排序,改变原列表)

python 复制代码
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}]

高级用法

  1. 降序排序 :添加 reverse=True 参数
python 复制代码
sorted_data = sorted(data, key=lambda x: x['age'], reverse=True)
  1. 多字段排序:当第一个字段相同时,按第二个字段排序
python 复制代码
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']))
  1. 使用 operator.itemgetter 替代 lambda(性能稍好)
python 复制代码
from operator import itemgetter

sorted_data = sorted(data, key=itemgetter('age'))

这些方法都可以帮助你根据字典中的特定字段对字典列表进行排序。

相关推荐
全马必破三几秒前
前端性能优化方案
开发语言·前端·javascript
苏克贝塔2 分钟前
使用 Qt QGraphicsView/QGraphicsScene 绘制色轮
开发语言·qt
一个天蝎座 白勺 程序猿10 分钟前
Python爬虫(34)Python爬虫高阶:动态页面处理与Playwright增强控制深度解析
开发语言·爬虫·python
keyBird在成长16 分钟前
Java集合操作:如何避免并发修改异常
java·windows·python
看到代码就头晕35 分钟前
python学习 day5
开发语言·python·学习
乌托邦的逃亡者37 分钟前
使用JProfiler进行Java应用性能分析
java·开发语言·性能优化
永日4567041 分钟前
java小结(一)
java·开发语言
卡布奇诺-海晨42 分钟前
RocketMQ 生产消费消息消息解析与重试机制详解
python·rocketmq·java-rocketmq
孞㐑¥1 小时前
Linux之Ext系列文件系统(含动静态库)
linux·开发语言·c++·经验分享·笔记
stay night481 小时前
DAY31
数据库·python