Python:在列表中查找频率为2的元素
假设我有一个列表: 输入: ids=[123456123] 我需要找到频率为2的元素 输出: 123Python:在列表中查找频率为2的元素,python,Python,假设我有一个列表: 输入: ids=[123456123] 我需要找到频率为2的元素 输出: 123 在python中执行此操作的最佳方法是?创建一个集合并对每个项目进行计数(或创建一个计数器或defaultdict),然后找出哪个项目的计数为2 from collections import Counter counter = Counter(ids) [k for k,v in counter.items() if v == 2] ids = [123, 456, 123] freq =
在python中执行此操作的最佳方法是?创建一个
集合
并对每个项目进行计数(或创建一个计数器
或defaultdict
),然后找出哪个项目的计数为2
from collections import Counter
counter = Counter(ids)
[k for k,v in counter.items() if v == 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)
这也可以通过内置方法完成,只过滤出那些符合您要求的元素,但最好在集合中进行,而不是在列表中对同一元素重复:
>>> 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]
@njzk2 wtf?每一秒的元素和频率2不是完全一样的东西…频率,周期,相同difference@LucasCrawford-我不是在打高尔夫球。也许如果我能打字快三倍,这个答案会有价值。
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)
>>> 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]