为什么在字典上应用的max函数没有给出最大值但是以最大值重新调整键?

时间:2017-10-21 00:38:44

标签: python python-2.7

为什么以下代码将输出返回为' c'而不是7,即使我们正在检查lambda函数中的字典值?

>>> a={'a': 1, 'c': 7, 'b': 5, 'd': 5}
>>> max(a, key=lambda x:a[x])
'c'
>>>

1 个答案:

答案 0 :(得分:1)

默认情况下,对字典进行迭代。在你的情况下看到正在发生的事情的另一种方法是调用list,它默认迭代键:

>>> list(a)
['a', 'c', 'b', 'd']

使用.values显式指定值的迭代。

>>> max(a.values())
7

如果您同时想要键和值,可以通过max致电.items

>>> max(a.items(), key=lambda x: x[1])
('c', 7)

.items在python2.x中返回一个元组,你可以让max迭代它并选择与每个元组第二个位置的max值对应的元组。