查找具有最大属性值的对象的键

时间:2013-11-29 18:11:07

标签: python dictionary

我有这样的字典词典。

d = {
    'a' : {'c' : 1, 'h' : 2},
    'b' : {'c' : 3, 'h' : 5},
    'c' : {'c' : 2, 'h' : 1},
    'd' : {'c' : 4, 'h' : 1}
}

我需要获取具有最高c + h值的项目的键。

我知道你可以获得具有最高价值的物品的钥匙,如下所示:

d = { 'a' : 1, 'b' : 2, 'c' : 3 }
max( d, key = d.get ) # 'c'

在我的情况下是否可以使用max功能?

3 个答案:

答案 0 :(得分:8)

您可以为key指定自己的功能,这可以做一些奇特的事情,例如获取ch的值并添加它们。例如,使用inline-lambda:

>>> max(d, key=lambda x: d[x]['c'] + d[x]['h'])
'b'

答案 1 :(得分:7)

>>> max(d, key = lambda x: d[x]['c'] + d[x]['h'])
'b'
>>> d
{'a': {'h': 2, 'c': 1}, 'c': {'h': 1, 'c': 2}, 'b': {'h': 5, 'c': 3}, 'd': {'h': 1, 'c': 4}}

答案 2 :(得分:6)

您可以使用max在字典词典中查找具有最高总和的项目的键。只需通过max一个合适的关键功能:

>>> d = {
...     'a' : {'c' : 1, 'h' : 2},
...     'b' : {'c' : 3, 'h' : 5},
...     'c' : {'c' : 2, 'h' : 1},
...     'd' : {'c' : 4, 'h' : 1}
... }
>>> max( d, key=lambda k: d[k]['c'] + d[k]['h'] )
'b'