a = dict(((1,3),(0,-1),(3,21)))
m = max(a, key=a.get)
有没有人能解释一下为什么会返回最大值对应的key?这让我难倒了好一阵子。谢谢!
发布于 2011-03-08 09:37:40
字典"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
注意,这里只输出了“key”。当我们将这些密钥传递给“get”时...
>>> a.get(0)
-1
>>> a.get(1)
3
>>> a.get(3)
21
我们得到每个键的值。现在看看max是如何工作的。
>>> b=[2, 3, 5, 6, 4]
>>> max(b)
6
>>> def inverse(x):
... return 1.0 / x
...
>>> max(b, key=inverse)
2
正如你所看到的,max (默认情况下)只会在我们的可迭代列表中找到最大的数字。如果我们定义“逆”函数,它将返回b中最大的项,对于b,inverse(item)
是最大的。
将这两项组合在一起,我们可以看到max(a, key=a.get)
将在a
中返回a.get(item)
值最大的item
。即对应于最大值的关键字。
发布于 2011-03-08 09:32:18
您是在问key
参数是如何工作的吗?它接受一个callable,它应用于字典中的每个元素。在您的字典中,它只执行以下操作:
a.get(1) # 3
a.get(0) # -1
a.get(3) # 21
然后,max
使用key函数的结果作为比较值,因此它显然会选择返回最高值的元素,即3。
https://stackoverflow.com/questions/5227291
复制相似问题