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

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

相关推荐
顶点多余4 分钟前
线程互斥+线程同步+生产消费模型
java·linux·开发语言·c++
Albert Edison6 分钟前
【ProtoBuf 语法详解】更新消息|保留字段|未知字段
开发语言·c++·protobuf
feifeigo1237 分钟前
近场声全息(NAH)数据与MATLAB实现
开发语言·matlab
fie888917 分钟前
基于MATLAB的非线性模型预测控制(NMPC)在CSRT系统中的应用
开发语言·matlab
⑩-18 分钟前
Java基础+集合框架-八股文
java·开发语言
福运常在24 分钟前
股票数据API(19)次新股池数据
java·python·maven
多看书少吃饭27 分钟前
Vue3 + Java + Python 打造企业级大模型知识库(含 SSE 流式对话完整源码)
java·python·状态模式
向上的车轮33 分钟前
熟悉C#如何转TypeScript——SDK与包引用
开发语言·typescript·c#
Z.风止33 分钟前
Large Model-learning(2)
开发语言·笔记·python·leetcode
蓝天守卫者联盟133 分钟前
玩具喷涂废气治理厂家:行业现状、技术路径与选型指南
大数据·运维·人工智能·python