Python Dict 多个 Max 值

标签 python python-3.x dictionary

我正在使用列表从列表中的一组项目中查找最大值,使用以下行: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)]

不幸的是,most_common 的参数n 为您提供了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)]

关于Python Dict 多个 Max 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31506694/

相关文章:

Python 列表追加

python - 无法找到带有类名的元素,无法找到带有 xpath 的元素 - Selenium,Python, `ERR_SSL_VERSION_OR_CIPHER_MISMATCH`

python 列表理解(如果,继续,中断)

javascript - hide div 上的传单 map

python - 将 Python 嵌套字典转换为 Numpy 数组

python - 使用 Tensorflow 2.0 模型子类化访问层输入/输出

Python - 如何保存从 html 传递的文件?

Python/Pydantic 迭代具有多个项目的帖子正文

python - 将 Hessian 矩阵定义为零

java - 通过添加/减去相应的值来合并 map