Python字典一个以上的最大值



我使用列表来查找列表中使用行的一组项目的最大值:x=max(dictionary, key=dictionary.get)除非字典中的两个或多个值相同,否则这很好,它似乎只是完全随机地选择一个最大值。是否有一种方法,我可以让它打印两个最大值,可能在一个列表中,例如:dictionary={'A':2,'B':1,'C':2}将返回x=['A','C']

>>> dictionary = { 'A': 2, 'B': 1, 'C': 2 }
>>> maxValue = max(dictionary.values())
>>> [k for k, v in dictionary.items() if v == maxValue]
['C', 'A']

您还可以使用计数器来按"最常见"(最高值)排序:

>>> from collections import Counter
>>> c = Counter(dictionary)
>>> c.most_common()
[('C', 2), ('A', 2), ('B', 1)]

不幸的是,参数nmost_common给你n的最大元素,而不是所有的最大值,所以你需要手动过滤它们,例如使用itertools.takewhile:

>>> from itertools import takewhile
>>> maxValue = c.most_common(1)[0][1]
>>> list(takewhile(lambda x: x[1] == maxValue, c.most_common()))
[('C', 2), ('A', 2)]

相关内容