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

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

相关推荐
小咕聊编程21 分钟前
基于Python的豆瓣电影数据可视化系统构建分析
开发语言·python·信息可视化
小小张说故事2 小时前
Python 的 dict 为什么查询是 O(1)?拆开哈希表、扰动函数与扩容阈值
python
脏脏a2 小时前
延迟与画质:远程控制的生命线
开发语言·php
像风一样的男人@2 小时前
python --基于scp的文件传输助手
开发语言·python
一条破秋裤2 小时前
SDIO Wi‑Fi 设备的驱动向insmod + 反向rmmod
开发语言·php
m0_639906942 小时前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
Evand J2 小时前
【MATLAB例程】平面下,5基站对待定位点的定位。基于距离辅助下的AOA。完整代码下载链接
开发语言·matlab·平面·定位·导航·测距·aoa
用户0332126663673 小时前
使用 Python 在 Word 文档中添加、修改和删除变量
python
GIS数据转换器3 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
专注仿真3 小时前
动态规划算法详解
人工智能·python·大模型训练·控制算法