如果我有一本字典找到python字典中所有最大值的鍵?
x ={0: 0, 1: 4, 2: 0, 3: 2, 4: 2, 5: 4}
我如何得到所有的最大值
在這種情況下的鑰匙,他們將在1和5。
不是重複的問題。尋找所有的鑰匙,而不只是一個。
如果我有一本字典找到python字典中所有最大值的鍵?
x ={0: 0, 1: 4, 2: 0, 3: 2, 4: 2, 5: 4}
我如何得到所有的最大值
在這種情況下的鑰匙,他們將在1和5。
不是重複的問題。尋找所有的鑰匙,而不只是一個。
在collections
中有一門課叫做Counter
,它完全符合你的要求。它提供給你通過它需要的具體功能是most_common
方法:
from collections import counter
maxes = Counter(x).most_common(2)
print([x[0] for x in maxes])
[1, 5]
現在,這可能不是你想要什麼,因爲我很難在數字2的編碼可以通過使用得到這個另一個Counter
您的字典的值!
x = Counter(x) # This preserves x: just makes it a subclass of dict
max_count = Counter(x.values())[x.most_common(1)[0][1]]
maxes = x.most_common(max_count)
maxes = [x[0] for x in maxes]
在這裏,我算得通過計數所有不同的值,然後檢查使用x.most_common(1)[0][1]
中最大的一個,經常發生的值的次數。
請不要選擇這個答案。 @BrightOne有正確的答案。這只是我做過的一件事,看看我是否可以避免使用除計數器之外的任何東西。這實際上並不是一個好主意。
x ={0: 0, 1: 4, 2: 0, 3: 2, 4: 2, 5: 4}
maximum = max(x.values())
keys = [key for key, value in x.items() if value == maximum]
print(keys) # => [1, 5]
這比我的回答要複雜得多。 –
我唯一的建議是爲了可讀性而在理解中解開元組:'[key for key,value in x.items()if value == maximum]' –
@MadPhysicist謝謝你,它好多了!編輯。 – BrightOne
看看[這個答案](https://stackoverflow.com/questions/268272/getting-key-with-maximum-value-in-dictionary) – Tim510
我做到了。但那是找到最大的。所以它只返回1而不是5. – aditmohan96
這裏的非平凡情況 –