Skip to main content
 首页 » 编程设计

python之遍历元组以计算列表中的值

2025年05月04日9zhenyulu

我有一个包含多个基因的字典。 tuple(zip()) 给出了每个位点的核苷酸。例如。 (A, A, A), (T, T, G), 等等。我正在尝试计算每个位点的核苷酸数量。这样站点 1 显示 3 个 A,站点 2 显示 2 个 T 和 1 个 G。当我运行我的代码时,它只添加到 A,没有其他任何内容。

List = tuple(zip(*myDict.values())) 
 
A = 0 
T = 0 
G = 0 
C = 0 
 
site = 0 
 
for value in List: 
    site +=1 
    if 'A': 
        A += 1 
    elif 'T': 
        T += 1 
    elif 'G': 
        G += 1 
    else: 
        C =+ 1 
 
print 'Site:', site 
print 'A:', A 
print 'T:', T 
print 'G:', G 
print 'C:', C 

请您参考如下方法:

您可以(再一次)最好地使用 collections.Counter():

[Counter(site) for site in zip(*myDict.values())] 

这将创建每个站点的基因计数列表。

演示:

>>> from collections import Counter 
>>> myDict = {'abc':'AGCTAC', 'def': 'AGGTAC', 'ghi':'AGGTAG'} 
>>> result = [Counter(site) for site in zip(*myDict.values())] 
>>> result 
[Counter({'A': 3}), Counter({'G': 3}), Counter({'G': 2, 'C': 1}), Counter({'T': 3}), Counter({'A': 3}), Counter({'C': 2, 'G': 1})] 
>>> result[0]  # genes at site 0 
Counter({'A': 3}) 
>>> result[2]  # genes at site 2 
Counter({'G': 2, 'C': 1})