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

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

相关推荐
小羊Linux客栈6 分钟前
Python自我娱乐小游戏
开发语言·python·游戏程序·娱乐
jiaoxingk20 分钟前
有关爬虫中数据库的封装——单线程爬虫
数据库·爬虫·python·mysql
武昌库里写JAVA28 分钟前
vuex源码分析(一)——初始化vuex
java·开发语言·spring boot·学习·课程设计
不思念一个荒废的名字31 分钟前
【刷题Day29】Python/JAVA - 03(浅)
java·开发语言·jvm·python
画个大饼32 分钟前
深度对比:Objective-C与Swift的RunTime机制与底层原理
开发语言·objective-c·swift
TNTLWT37 分钟前
3、CMake语法:制作和使用动态库和静态库
开发语言·cmake
凤年徐1 小时前
【C/C++】深入理解指针(六)
c语言·开发语言·c++·经验分享·笔记·指针
JavaEdge在掘金1 小时前
精通 Spring AOP Execution 表达式:精准匹配你的切点
python
学了就忘1 小时前
JavaScript 异步编程与请求取消全指南
开发语言·javascript·ecmascript
通南北1 小时前
使用python实现自动化拉取压缩包并处理流程
开发语言·python·自动化