You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python字典列表中选取指定字段最小值对应的元素?

选取字典列表中Age最小的完整元素

嘿,这个需求其实很好解决,Python里有几个简洁的方法能帮你实现,我给你拆解一下:

方法一:用min()函数直接获取单个最小元素

这是最直接高效的方式,min()函数可以接受一个key参数,用来指定比较的依据——这里就是每个字典的Age字段。代码如下:

myListOfPeople = [{'ID': 0, 'Name': 'Mary', 'Age': 25}, {'ID': 1, 'Name': 'John', 'Age': 28}]
younger_person = min(myListOfPeople, key=lambda person: person['Age'])
print(younger_person)

运行后输出就是你想要的结果:

{'ID': 0, 'Name': 'Mary', 'Age': 25}

这里的lambda person: person['Age']是一个匿名函数,作用是从每个字典里提取Age的值,让min()根据这个值来找出最小的那个完整字典元素。

方法二:获取所有年龄最小的元素(处理多个相同最小值的情况)

如果你的列表里有多个元素的Age都是最小值(比如再加一个{'ID':2, 'Name':'Lisa', 'Age':25}),上面的方法只会返回第一个遇到的元素。要是想把所有符合条件的元素都选出来,可以先算出最小年龄,再用列表推导式筛选:

myListOfPeople = [
    {'ID': 0, 'Name': 'Mary', 'Age': 25},
    {'ID': 1, 'Name': 'John', 'Age': 28},
    {'ID': 2, 'Name': 'Lisa', 'Age': 25}
]
# 先算出最小年龄
min_age = min(person['Age'] for person in myListOfPeople)
# 筛选所有Age等于最小年龄的元素
younger_people = [person for person in myListOfPeople if person['Age'] == min_age]
print(younger_people)

输出结果会是:

[{'ID': 0, 'Name': 'Mary', 'Age': 25}, {'ID': 2, 'Name': 'Lisa', 'Age': 25}]

关于你原来的思路补充

你一开始想直接在列表推导式里判断,但如果写成[person for person in myListOfPeople if person['Age'] == min(x['Age'] for x in myListOfPeople)]虽然也能行,但每次循环都会重新计算一次最小年龄,效率会低一些。所以先把最小年龄存到变量里再筛选,是更优的写法~

内容的提问来源于stack exchange,提问作者Guilherme Campos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:02:28