Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在字典上应用max函数时没有给出最大值,而是用最大值重新调整键?_Python_Python 2.7 - Fatal编程技术网

Python 为什么在字典上应用max函数时没有给出最大值,而是用最大值重新调整键?

Python 为什么在字典上应用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

为什么在检查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
明确指定对值的迭代

>>> 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))
。谢谢,是的,它是正确的,但逻辑混乱,突然无法理解:)违反直觉