从字典中获取最大值

8

我可以确信这非常简单:

假设我有以下字典:

 foo = { a: 3, b: 10, c: 5 }

什么是获取值10最高效(且最干净)的方法?谢谢。
3个回答

15
如果你只关心找到最大值而不是与其相关的键,那么你只需要访问字典的值(尽管这篇链接帖子"Getting key with maximum value in dictionary?"绝对值得一读)。
在Python 2.x中:
max(foo.itervalues())

在Python 3.x上:

max(foo.values())

4
为了获得字典的最大值,您可以这样做:
>>> d = {'a':5,'b':10,'c':5}
>>> d.get(max(d, key=d.get))
10

解释:
max(d, key=d.get) => 获取字典 d 中值最大的键
d.get => 获取与该键相关联的值

希望这能帮到您。


这确实可以工作,但也引入了大量的函数调用来进行关键字查找...因此增加了不必要的开销... - Jon Clements
@JonClements 我同意。你的解决方案更好,因为你使用了迭代。但这个也可以工作。 - fscore

3

假设你有以下计数器对象:

from collections import Counter
foo = Counter({ "a": 3, "b": 10, "c": 5 })

你可以使用.most_common()方法来获取一个按照最多到最少排序的元组列表:
>>> foo.most_common()
[('b', 10), ('c', 5), ('a', 3)]

要获取最大值,只需获取第一个元素即可:
foo_max = foo.most_common()[0]

那只有当对象是collections.Counter时才会这样 - 即使是这样,most_common也不是真正为此设计的... 这基本上就像执行sorted(foo.values(), reverse=True)[0] - Jon Clements

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