在字典的字典中查找最小元素
我需要找出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]