2014-09-10 139 views
4

如果我有与它们对应的频率值的字典:如何获得具有相同最高值的所有密钥?

numbers = {a: 1, b: 4, c: 1, d: 3, e: 3} 

要找到最高的,我知道什么是:

mode = max(numbers, key=numbers.get) 
print mode 

和打印:

b 

但如果我有:

numbers = {a: 1, b: 0, c: 1, d: 3, e: 3} 

和应用上面, '最大' 功能,输出为:

d 

我需要的是:

d,e 

或者类似的东西,显示这两个键。

回答

6
numbers = {'a': 1, 'b': 0, 'c': 1, 'd': 3, 'e': 3} 

[k for k,v in numbers.iteritems() if v == max(numbers.values())] 

打印

['e', 'd'] 

它是什么,环比通过.iteritems所有条目,然后检查是否值是最大的,如果是添加的关键列表。

+1

这样做效率相当低,因为对于每个密钥一次又一次地计算“max”,并给它O(n²)。在理解之前更好地将最大值存储在变量中。 – 2017-11-09 13:07:11

相关问题