Python max具有相同数量的实例

jam*_*sas 8 python max instances

我有一个清单:

hello = ['1', '1', '2', '1', '2', '2', '7']
Run Code Online (Sandbox Code Playgroud)

我想显示列表中最常见的元素,所以我使用了:

m = max(set(hello), key=hello.count)
Run Code Online (Sandbox Code Playgroud)

但是,我意识到列表中可能有两个出现相同频率的元素,如上面列表中的1和2.Max仅输出最大频率元素的第一个实例.

什么样的命令可以检查列表以查看两个元素是否都具有最大实例数,如果是,则将它们输出?我在这里不知所措.

Nik*_* B. 13

使用类似于当前的方法,您将首先找到最大计数,然后查找具有该计数的每个项目:

>>> m = max(map(hello.count, hello))
>>> set(x for x in hello if hello.count(x) == m)
set(['1', '2'])
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用nice Counter类,它可以有效地用于计算内容:

>>> hello = ['1', '1', '2', '1', '2', '2', '7']
>>> from collections import Counter
>>> c = Counter(hello)
>>> c
Counter({'1': 3, '2': 3, '7': 1})
>>> common = c.most_common()
>>> common
[('1', 3), ('2', 3), ('7', 1)]
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用列表推导来获取具有最大计数的所有项目:

>>> set(x for x, count in common if count == common[0][1])
set(['1', '2'])
Run Code Online (Sandbox Code Playgroud)