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'))

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

相关推荐
weixin_440784113 小时前
【HandlerThread实现原理】
android·java·开发语言
天空'之城3 小时前
C 语言工业级通用组件手写 24:互补滤波
c语言·开发语言·互补滤波·嵌入式算法·工业级组件
XR1234567883 小时前
工厂车间无线网络方案对比:AGV漫游哪家强?
开发语言·php
傻啦嘿哟4 小时前
某短视频平台视频爬虫实战:抓取推荐流视频信息,绕过反爬的3种技巧
开发语言·爬虫·python
迷迭香yy4 小时前
集合竞价数据挖掘实战:用Python构建开盘信号识别系统
人工智能·python·数据挖掘
現実君5 小时前
【硬件进阶】AD22上位替换JLEDA教程
开发语言·php
mubei-1235 小时前
SpringDAO的用法
java·开发语言·数据库
李昊哲小课7 小时前
fastapi sse websocket 奶茶店实时订单看板
人工智能·python·websocket·网络协议·fastapi·sse
格林威7 小时前
多相机微秒级对齐:硬件触发 vs PTP(IEEE 1588)方案实战对比
开发语言·人工智能·数码相机·机器学习·计算机视觉·视觉检测·机器视觉
初级代码游戏8 小时前
iOS开发 Swift 速记2:三种集合类型 Array Set Dictionary
开发语言·ios·swift