2014-09-10 135 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

相關問題