例如,如果我有一个基因名称列表,并且我想创建一个仅包含重复基因的新列表,我该怎么做?
原始列表示例:
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 及更早版本上,它将具有任意顺序。
