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

时间:2011-02-22 20:09:09

标签: python multidimensional-array python-2.4

我需要找到apple的哪个元素具有最小size

所有答案的Tnx。但是有一个问题:我使用Python 2.4.2(我不能改变它)而函数min没有key arg。是的,我需要apple

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

6 个答案:

答案 0 :(得分:12)

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

会回复你

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

更新:获取索引:

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

答案 1 :(得分:10)

Python为min函数提供了一个非常好的参数,它允许使用任意函数来缩小,而不是仅仅使用元素上的比较:

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

在大多数情况下,key参数替换了可能在此处应用的decorate-process-undecorate的旧习语:

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]

答案 2 :(得分: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

P.S。由于apple是一个集合,我会将其复数形式 - apples

答案 3 :(得分:1)

不知道这是否是最快的方式,但无论如何:

>>> apple = [ {'size':12, 'color': 'red' }, { 'size':10, 'color':'green'} ]
>>> a = dict(map(lambda apple: (apple['size'], apple), apple))
>>> a
{10: {'color': 'green', 'size': 10}, 12: {'color': 'red', 'size': 12}}
>>> min = a[min(a.keys())]
>>> min
{'color': 'green', 'size': 10}

答案 4 :(得分:1)

def get_min(apple):
    L = apple.values()
    m = L[0]
    for item in L:
        if item['size'] < m['size']:
            m = item
    return m

P.S。不是非常pythonic但线性时间

答案 5 :(得分:0)

min(map(lambda a:[apple[a]['size'],a], apple))[1]