为什么以下代码将输出返回为' c'而不是7,即使我们正在检查lambda函数中的字典值?
>>> a={'a': 1, 'c': 7, 'b': 5, 'd': 5}
>>> max(a, key=lambda x:a[x])
'c'
>>>
答案 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
值对应的元组。