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)