我已经创建了一个用于计算氨基酸频率的列表和字典。
我想基本上用列表中的值替换字典中的值。
例如,
我现在拥有的是。
L1 = [0.0429, 0.0071, 0.05, 0.0929, 0.0429, 0.0143, 0.0071, 0.0429, 0.0929, 0.1143, 0.0643, 0.0643, 0.05, 0.0286, 0.0286, 0.0643, 0.0857, 0.0714, 0.0143, 0.0214]
和
D1 = OrderedDict([('A', 6), ('C', 1), ('D', 7), ('E', 13), ('F', 6), ('G', 2), ('H', 1), ('I', 6), ('K', 13), ('L', 16), ('M', 9), ('N', 9), ('P', 7), ('Q', 4), ('R', 4), ('S', 9), ('T', 12), ('V', 10), ('W', 2), ('Y', 3)])
我想将D1
中的每个值替换为L1
中的值。
例如,我想要([('A', 0.0429),('C',0.0071)....
等等。
这是创建列表(L1
)和字典(D1
)的代码。
for seq_record in SeqIO.parse(f1,'fasta'):
sorted_dict = (collections.OrderedDict(sorted(Counter(seq_record.seq).items())))
total = float(sum(Counter(seq_record.seq).values()))
print sorted_dict
aa_frequency =(round(value/total,4) for key, value in sorted_dict.items())
aa_frequency_value = []
for i in aa_frequency:
aa_frequency_value.append(i)
答案 0 :(得分:3)
非常简单,因为您已按顺序拥有值和键。
for val, key in zip(L1, D1):
D1[key] = val
似乎您应该就地执行此操作,因为您没有添加或删除元素
total = float(um(Counter(seq_record.seq).values()))
for key,val in sorted_dict.items():
newval = round(val/total, 4)
sorted_dict[key] = newval