密钥对应python字典中的最大值

Gla*_*wed 16 python

a = dict(((1,3),(0,-1),(3,21)))
m = max(a, key=a.get)
Run Code Online (Sandbox Code Playgroud)

有人可以给我一个解释,为什么这会返回对应于最大值的键?它困扰了我很长一段时间.谢谢!

Pro*_*Sim 23

字典"a"是python中的可迭代结构.当你循环使用时for x in a,你循环遍历字典中的键.

在第二行中,max函数有两个参数:一个可迭代对象(a)和一个可选的"key"函数.Key函数将用于评估a中最大的项目的值.

例子:

>>> a = dict(((1,3),(0,-1),(3,21)))
>>> for x in a:
...     print x #output the value of each item in our iteration
... 
0
1
3
Run Code Online (Sandbox Code Playgroud)

请注意,只输出"键".当我们将这些键中的每一个传递给"获取"时......

>>> a.get(0)
-1
>>> a.get(1)
3
>>> a.get(3)
21
Run Code Online (Sandbox Code Playgroud)

我们得到每个键的值.现在看看max的工作原理.

>>> b=[2, 3, 5, 6, 4]
>>> max(b)
6
>>> def inverse(x):
...     return 1.0 / x
... 
>>> max(b, key=inverse)
2
Run Code Online (Sandbox Code Playgroud)

如您所见,max(默认情况下)只会找到可迭代列表中的最大数字.如果我们定义"逆"函数,它将返回b中最大的最大项inverse(item).

结合这两个项目,我们看到max(a, key=a.get)将返回值最大的itemin .即对应于最大值的键.aa.get(item)