2
我正在使用一个列表从列表中的一组项目中找到一个最大值:x=max(dictionary, key=dictionary.get)
这工作正常,除非字典中的两个或多个值相同,它只是似乎完全随机选择一个最大值。 有没有一种方法,我可以得到它同时打印的最高值,可能在一个列表例如:dictionary={'A':2,'B':1,'C':2}
将返回x=['A','C']
Python Dict不止一个最大值
我正在使用一个列表从列表中的一组项目中找到一个最大值:x=max(dictionary, key=dictionary.get)
这工作正常,除非字典中的两个或多个值相同,它只是似乎完全随机选择一个最大值。 有没有一种方法,我可以得到它同时打印的最高值,可能在一个列表例如:dictionary={'A':2,'B':1,'C':2}
将返回x=['A','C']
Python Dict不止一个最大值
>>> 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)]
不幸的是,参数n
到most_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)]
你的意思是'['A','C']'? – Kasramvd
@Kasra是的,谢谢 –
你可以按值排序字典,然后在最后一个(键,值)对(最大值)上使用'itertools.groupby'? – Scott