使用列表Python

时间:2015-11-25 22:33:37

标签: python dictionary

我已经创建了一个用于计算氨基酸频率的列表和字典。

我想基本上用列表中的值替换字典中的值。

例如,

我现在拥有的是。

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) 

1 个答案:

答案 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