Python 为什么在字典上应用max函数时没有给出最大值,而是用最大值重新调整键?
为什么在检查lambda函数中的字典值时,以下代码仍将输出返回为“c”而不是7Python 为什么在字典上应用max函数时没有给出最大值,而是用最大值重新调整键?,python,python-2.7,Python,Python 2.7,为什么在检查lambda函数中的字典值时,以下代码仍将输出返回为“c”而不是7 >>> a={'a': 1, 'c': 7, 'b': 5, 'd': 5} >>> max(a, key=lambda x:a[x]) 'c' >>> 默认情况下,字典上的迭代发生在键上。查看案例的另一种方法是调用列表,默认情况下,该列表也会迭代键: >>> list(a) ['a', 'c', 'b', 'd'] 您可以使用.values
>>> a={'a': 1, 'c': 7, 'b': 5, 'd': 5}
>>> max(a, key=lambda x:a[x])
'c'
>>>
默认情况下,字典上的迭代发生在键上。查看案例的另一种方法是调用
列表
,默认情况下,该列表也会迭代键:
>>> 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
值对应的元组 因为当你迭代一个dict
时,你迭代的是键。要获得最大值,请尝试max(a.values())
将键传回dict
:a.get(max(a,key=a.get))
。谢谢,是的,它是正确的,但逻辑混乱,突然无法理解:)违反直觉