Skip to main content
 首页 » 编程设计

python之如何仅解析 Python 列表中的重复项

2025年05月04日15leader

例如,如果我有一个基因名称列表,并且我想创建一个仅包含重复基因的新列表,我该怎么做?

原始列表示例:

RGN 
RBM10 
ARAF 
ZNF630 
FTSJ1 
SLC35A2 
SLC35A2 
SLC35A2 
MAGIX 
DGKK 
XAGE1B 
XAGE1B 
SMC1A 
FAM120C 
CXorf49 
CXorf49B 
CHIC1 
ABCB7 
PBDC1 
FGF16 
ATP7A 
CYLC1 
TSPAN6 
BTK 
BTK 
TCEAL4 
TEX13A 
FRMPD3 
PRPS1 
COL4A6 
COL4A6 
COL4A6 

例如,SLC35A2,将出现在新列表中,因为它重复了 3 次。

请提出建议。

请您参考如下方法:

collections.Counter 使这变得快速而简单:

from collections import Counter 
 
# Using other answer's listOfGenes for convenience 
listOfGenes = "RGN RBM10 ARAF ZNF630 FTSJ1 SLC35A2 SLC35A2 SLC35A2 MAGIX DGKK XAGE1B XAGE1B SMC1A FAM120C CXorf49 CXorf49B CHIC1 ABCB7 PBDC1 FGF16 ATP7A CYLC1 TSPAN6 BTK BTK TCEAL4 TEX13A FRMPD3 PRPS1 COL4A6 COL4A6 COL4A6".split() 
 
# Actual work is a one-liner; count them all, keep those with count of 2 or more 
duplicates = [gene for gene, cnt in Counter(listOfGenes).items() if cnt >= 2] 

在 CPython 3.6 及更高版本(以及所有达到 3.7 后的 Python 解释器)上提供插入顺序 dict,duplicates list 将是按照在 listOfGenes 中首次出现的顺序排列;在 3.5 及更早版本上,它将具有任意顺序。