在python字典中查找所有最大值的键?

时间:2017-07-08 05:38:39

标签: python-3.x dictionary

如果我有字典

x ={0: 0, 1: 4, 2: 0, 3: 2, 4: 2, 5: 4}

如何获取所有最大值的键

在这种情况下,他们将是1和5。

不是重复的问题。希望找到所有的钥匙,而不仅仅是那个钥匙。

2 个答案:

答案 0 :(得分:3)

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]

答案 1 :(得分:1)

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有正确的答案。这只是我做的一件事,看看我是否可以避免使用除计数器之外的任何东西。这实际上不是一个好主意。