以最高价值在字典中抓取字典的关键字

时间:2015-08-22 15:37:05

标签: python dictionary max

所以我有以下字典( Python 3 ):

mydict = {'a' : {'c' : 1}, 'b' : {'c' : 2}}

如您所见ab是类似的词典,它们具有相同的键,但这些键的值并不总是相同。

我想要这个字典:密钥('a''b')哪个值(=字典)包含与其他字典相比具有最高值的密钥。

我一直关注max功能但到目前为止没有运气。

2 个答案:

答案 0 :(得分:5)

要获取具有特定键('c')的最高值的嵌套字典的键,请使用:

max(mydict, key=lambda k: mydict[k]['c'])

或使用

max(mydict, key=lambda k: mydict[k].get('c', float('-inf')))

如果不是所有嵌套词典都有'c'键。 float('-inf')返回值可确保不会将这些键选为最大值。

key中的每个键调用mydict函数,其返回值用于选择哪一个是最大值:

>>> mydict = {'a' : {'c' : 1}, 'b' : {'c' : 2}}
>>> max(mydict, key=lambda k: mydict[k]['c'])
'b'

答案 1 :(得分:4)

max()函数支持key参数,你可以传递一个函数对象(比如lambda),这个函数会接收你传递给max的list / iterable的每个值,并且应该返回值在哪个计算最大值

示例 -

>>> mydict = {'a' : {'c' : 1}, 'b' : {'c' : 2}}
>>> max(mydict, key=lambda x: mydict[x]['c'])
'b'