我有一个类似于以下示例的python字典:
小例子:
dict = {'chr2:173370685-173370692': 'TACCAAG', 'chr5:118309829-118309836': 'TCTCCTT', 'chr12:104659651-104659658': 'GACCAAA'}
我只需要每个项目的值部分,它是一个字母序列,字母是A, T, C or G
,而且每个序列的长度是7,所以每个字母序列都有7 positions
。我想得到每个位置中提到的4个字母的频率(我们有7
个位置)。对于每一个职位,我都会编一本字典,其中字母是关键,每个字母的频率是有价值的。最后我想为所有七个位置制作一本字典,第一本字典就是最后一本字典的值。
下面是小示例的预期输出:
预期产量:
final = {one: {'T': 2, 'A': 1, 'C': 0, 'G': 0}, two: {'T': 0, 'A': 2, 'C': 1, 'G': 0}, three: {'T': 1, 'A': 0, 'C': 2, 'G': 0}, four: {'T': 0, 'A': 0, 'C': 3, 'G': 0}, five: {'T': 0, 'A': 2, 'C': 1, 'G': 0}, six: {'T': 1, 'A': 2, 'C': 0, 'G': 0}, seven: {'T': 1, 'A': 1, 'C': 0, 'G': 1}}
为了得到这个输出,我在python
中编写了一个代码,但它并没有返回我想要的结果。你知道如何修复下面的代码吗?你知道吗
one=[]
two=[]
three=[]
four=[]
five=[]
six=[]
seven=[]
mylist = dict.values()
for threeq in mylist:
one.append(threeq[0])
two.append(threeq[1])
three.append(threeq[2])
four.append(threeq[3])
five.append(threeq[4])
six.append(threeq[5])
seven.append(threeq[6])
from collections import Counter
one=Counter(one)
two=Counter(two)
three=Counter(three)
four=Counter(four)
five=Counter(five)
six=Counter(six)
seven=Counter(seven)
下面是一种方法,使用
Counter
:我把原始索引保留为整数,使用它们可能比使用像“1”、“2”这样的字符串更容易。。。但如果你真的想:
试试这个:
输出
相关问题 更多 >
编程相关推荐