在字典中查找最大值

9

可能重复:
如何在字典中找到对应值最大的键?

假设我有一个由整数键和整数值组成的字典。我想找到具有最高相应值的整数键。是否有任何内置方法可以执行此操作,还是需要实现某种合并/排序算法?


已经在StackOverflow上回答了这里 - Ray Toal
1
尝试过查找现有答案了吗?请参考此链接:https://dev59.com/nnVC5IYBdhLWcg3whRcw - 解决方案就是这个:max(stats.iteritems(), key=operator.itemgetter(1)) - Tadeck
max(stats, key=stats.itemgetter(1)) 是从 https://dev59.com/nnVC5IYBdhLWcg3whRcw 中得到的最高投票。 - jimifiki
2个回答

42
你可以直接使用max
>>> x = {1:2, 3:6, 5:4}
>>> max(x, key=lambda i: x[i])
3
或者只需:

Or just:

>>> max(x, key=x.get)
3

5
有几种方法可以做到这一点,首选的方法是使用以下代码:
import operator

result = max(your_dict.iteritems(), key=operator.itemgetter(1))[0]

请注意,对于您的需求,operator.itemgetter(1) 可以被替换为 lambda x: x[1]


使用 your_dict.iteritems() 相比于仅使用 your_dict 有什么优势吗? - verdesmarald
@verdesmarald:它们产生不同的结果(your_dict.iteritems() 返回的内容与 your_dict 不同),因此它们是不能进行比较的。 - Tadeck
抱歉,我的意思是针对这个特定的问题, max(your_dict.iteritems())[0]max(your_dict) 得到的结果是相同的。 - verdesmarald
@verdesmarald:您是错误的 - max(your_dict) 将给出最大的键,而不是对应于最大值的键。为了看到区别,请查看以下结果:max({1:100,2:20})(它将给你2而不是1)。 - Tadeck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接