Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在列表中查找频率为2的元素_Python - Fatal编程技术网

Python:在列表中查找频率为2的元素

Python:在列表中查找频率为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 =

假设我有一个列表:

输入: 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 = 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]