首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python字典中最大值对应的键

python字典中最大值对应的键
EN

Stack Overflow用户
提问于 2011-03-08 09:21:54
回答 2查看 9.1K关注 0票数 16
代码语言:javascript
复制
a = dict(((1,3),(0,-1),(3,21)))
m = max(a, key=a.get)

有没有人能解释一下为什么会返回最大值对应的key?这让我难倒了好一阵子。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-08 09:37:40

字典"a“是python中的一个可迭代结构。当您使用for x in a遍历时,您是在遍历字典中的键。

在第二行中,max函数有两个参数:一个可迭代的对象(a)和一个可选的"key“函数。Key函数将用于计算a中项目的值--将返回其中最大的值。

示例:

代码语言:javascript
复制
>>> 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”时...

代码语言:javascript
复制
>>> a.get(0)
-1
>>> a.get(1)
3
>>> a.get(3)
21

我们得到每个键的值。现在看看max是如何工作的。

代码语言:javascript
复制
>>> 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。即对应于最大值的关键字。

票数 23
EN

Stack Overflow用户

发布于 2011-03-08 09:32:18

您是在问key参数是如何工作的吗?它接受一个callable,它应用于字典中的每个元素。在您的字典中,它只执行以下操作:

代码语言:javascript
复制
a.get(1)  # 3
a.get(0)  # -1
a.get(3)  # 21

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5227291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档