从字典中获取最大值[重复]

Posted

技术标签:

【中文标题】从字典中获取最大值[重复]【英文标题】:Getting the Max Value from a Dictionary [duplicate] 【发布时间】:2013-11-15 19:29:40 【问题描述】:

我相信这很容易:

假设我有以下字典:

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

获得值 10 的最有效(和最干净)的方法是什么

谢谢

【问题讨论】:

【参考方案1】:

如果您只关心找到最大值,而不关心与其相关的键,那么您只需访问 dict 的值(尽管链接的帖子 Getting key with maximum value in dictionary? 绝对值得一读)

在 Python 2.x 上:

max(foo.itervalues())

在 Python 3.x 上:

max(foo.values())

【讨论】:

【参考方案2】:

假设你有以下 Counter 对象:

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

然后您可以使用.most_common() 方法获取按从多到少排序的元组列表:

>>> foo.most_common()
[('b', 10), ('c', 5), ('a', 3)]

要获得 max,只需抓住第一个元素:

foo_max = foo.most_common()[0]

【讨论】:

如果对象是collections.Counter - 即使那样,most_common 也不是为此而设计的......这很像sorted(foo.values(), reverse=True)[0]【参考方案3】:

为了得到字典的最大值。你可以这样做:

>>> d = 'a':5,'b':10,'c':5
>>> d.get(max(d, key=d.get))
10

说明: max(d, key=d.get) => 获取具有最大值的键,其中 d 是字典 d.get => 获取与该键关联的值

希望这会有所帮助。

【讨论】:

这确实有效,但也引入了许多用于键查找的函数调用......所以所有这些都增加了不必要的开销...... @JonClements 我同意。当您使用迭代时,您有一个更好的解决方案。但这也有效。

以上是关于从字典中获取最大值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

不使用 max() 和 min() 从字典中获取最大值和最小值

用键打印dict中的最大值[重复]

C# - 字典 - 如何在字典中获取特定类值的最大值? [复制]

在字典中查找最大值[重复]

如何从从excel文件派生的大量字典中的值列表中查找最小值和最大值

以pythonic方式打印字典中最大值的键[重复]