我们说我有一个清单:
输入: ids = [123,456,123]
我需要找到频率为2的元素。
输出: 123
在python中执行此操作的最佳方法是什么?
答案 0 :(得分:7)
from collections import Counter
counter = Counter(ids)
[k for k,v in counter.items() if v == 2]
答案 1 :(得分:0)
制作set
并计算每个项目(或制作Counter
或defaultdict
),然后找出哪个项目的计数为2.
ids = [123, 456, 123]
freq = 2
set_ids = set(ids)
counts = {item:ids.count(item) for item in set_ids}
for item in counts:
if counts[item] == freq:
print(item)
import collections
ids = [123, 456, 123]
freq = 2
counted_ids = collections.Counter(ids)
for item in counted_ids:
if counted_ids[item] == freq:
print(item)
import collections
ids = [123, 456, 123]
freq = 2
counts = collections.defaultdict(int)
for item in ids:
counts[item] += 1
for item in counts:
if counts[item] == freq:
print(item)
答案 2 :(得分:0)
这也可以使用内置方法filter
到过滤只能完成那些满足您要求的元素,但最好是在集合而不是列表上完成不要为同一个元素重复:
>>> ids = [123, 456, 123]
>>> s = set(ids)
>>> filter(lambda x:ids.count(x)==2, s)
>>> list(filter(lambda x:ids.count(x)==2, s)) #If Python3
[123]