python字典中最大值对应的键

2024-04-18 23:32:24 发布

您现在位置:Python中文网/ 问答频道 /正文

a = dict(((1,3),(0,-1),(3,21)))
m = max(a, key=a.get)

有人能解释一下为什么会返回与最大值对应的键吗?这件事困扰了我好一阵子。谢谢!


Tags: keygetdictmax
2条回答

字典“a”是python中的一个iterable结构。当您使用for x in a循环时,您是在循环字典中的键。

在第二行中,max函数接受两个参数:iterable对象(a)和可选的“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

注意这里只输出“键”。当我们把这些钥匙都交给“拿”的时候。。。

>>> a.get(0)
-1
>>> a.get(1)
3
>>> a.get(3)
21

我们得到每个键的值。现在看看麦克斯是怎么工作的。

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

如您所见,max(默认情况下)将在iterable列表中找到最大的数字。如果我们定义“inverse”函数,它将返回b中inverse(item)最大的项。

结合这两项,我们看到max(a, key=a.get)将返回a中的item,其中a.get(item)的值最大。i、 e.对应最大值的键。

你是在问key参数是如何工作的吗?它需要一个callable,它应用于字典中的每个元素。就你的字典而言,它只是这样做:

a.get(1)  # 3
a.get(0)  # -1
a.get(3)  # 21

max然后使用键函数的结果作为比较值,因此它显然会选择返回最高值的元素,即3。

相关问题 更多 >