如何获得具有相同最高值的所有密钥?
问题描述:
如果我有与它们对应的频率值的字典:如何获得具有相同最高值的所有密钥?
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
或者类似的东西,显示这两个键。
答
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
所有条目,然后检查是否值是最大的,如果是添加的关键列表。
这样做效率相当低,因为对于每个密钥一次又一次地计算“max”,并给它O(n²)。在理解之前更好地将最大值存储在变量中。 – 2017-11-09 13:07:11