如何获得具有相同最高值的所有键?

Sho*_*ryu 9 python dictionary key python-2.7

如果我有一个字典及其相应的频率值:

numbers = {a: 1, b: 4, c: 1, d: 3, e: 3}
Run Code Online (Sandbox Code Playgroud)

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

mode = max(numbers, key=numbers.get)
print mode
Run Code Online (Sandbox Code Playgroud)

并打印:

b
Run Code Online (Sandbox Code Playgroud)

但如果我有:

numbers = {a: 1, b: 0, c: 1, d: 3, e: 3}
Run Code Online (Sandbox Code Playgroud)

并应用上面的'max'函数,输出为:

d
Run Code Online (Sandbox Code Playgroud)

我需要的是:

d,e
Run Code Online (Sandbox Code Playgroud)

或类似的东西,显示两个键.

xor*_*you 10

numbers = {'a': 1, 'b': 0, 'c': 1, 'd': 3, 'e': 3}
max_value = max(numbers.values())


[k for k,v in numbers.iteritems() if v == max_value]
Run Code Online (Sandbox Code Playgroud)

版画

 ['e', 'd']
Run Code Online (Sandbox Code Playgroud)

它的作用是,遍历所有条目.iteritems,然后检查该值是否为最大值,如果是,则将该键添加到列表中.

  • 这是相当低效的,因为对每个键都一次又一次地计算“ max”,使其为O(n²)。最好在理解之前将max存储在变量中。 (2认同)