我需要一个从列表中返回最常用值的函数。如果有多个最常见的值,则返回所有值。
l = [1, 1, 2, 2, 4]
def most_common(l):
#some code
return common
这应该返回:
[1, 2]
因为他们都出现了两次。
我很惊讶没有简单的功能。我尝试过收藏品,但似乎无法解决这个问题。
答案 0 :(得分:0)
您可以先将collections.defaultdict
中的项目与计数值分组:
from collections import defaultdict
l = [1, 1, 2, 2, 4]
counts = defaultdict(int)
for number in l:
counts[number] += 1
print(counts)
# defaultdict(<class 'int'>, {1: 2, 2: 2, 4: 1})
然后你可以从这本词典中找到最常见的值:
most_common = [k for k, v in counts.items() if v == max(counts.values())]
print(most_common)
# [1, 2]