在字典的字典中查找最小元素

3 投票
6 回答
6697 浏览
提问于 2025-04-16 12:19

我需要找出apple中哪个元素的size最小。

谢谢大家的回答。不过有一个问题:我用的是Python 2.4.2(我不能更改它),而且min函数没有key这个参数。没错,我需要的是apple的关键字。

apple = {1:{'size':12,'color':'red'},2:{'size':10,'color':'green'}}

6 个回答

3

使用 min 函数,并加上一个自定义的 key 函数,这个函数会返回每个项目的大小。

apple = {1:{'size':12,'color':'red'},2:{'size':10,'color':'green'}}
print min(apple.keys(), key=lambda k, a=apple: a[k]['size'])

这样会输出:

2

附注:因为 apple 是一个集合,所以我会把它改成复数形式 -- apples

12
import operator
min(apple.values(), key=operator.itemgetter('size'))

这会返回给你

{'color': 'green', 'size': 10}

更新:要获取索引:

min(apple, key=lambda k: apple[k]['size'])
10

Python 的 min 函数有一个非常好用的参数,可以让你用任意的函数来找最小值,而不仅仅是比较元素本身:

result = min(apple.values(), key=lambda x:x['size'])

这个 key 参数在很多情况下取代了以前的做法,即先装饰、再处理、最后去掉装饰的方法:

result = min((x['size'], x) for x in apple.values())[1]

如果你想知道苹果的编号(问题中没有明确说明),那么:

result = min(apple.keys(), key=lambda x:apples[x]['size'])

或者(旧的方式)

result = min((apples[x]['size'], x) for x in apple.keys())[1]

撰写回答