如何使用for循环从键相同但值不同的旧字典创建新字典

2024-06-16 09:38:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用字典来计算DNA链的分子量和分子式。我不想更新字典,我只想根据字符串中的字符数将字典的值存入一个新字典。这是我试过的一段代码示例

deoxy_cytosine_dict ={"one letter code":"C" ,  "C":9 , "H":14 ,"N":3 , "O":8  ,"P":"P", "molecular weight":227 }




sequence ="CCGTCACCGGCCAACAGTGTGCAGATGGCGCCACGATGGGCAATACGAGCTCAAGCCAGTCT"
C_count = sequence.count("C")
tuple_pairs = []
new_dict = {}
for i in deoxy_cytosine_dict.values():
    values_for_new_dict = i * C_count
    tuple_pairs.append(values_for_new_dict)
    new_dict.update(tuple_pairs)

print(new_dict)

我希望代码输出带有更新值的new_dict

new_dict:{"one letter code":"C" , "C":9*C_count, "H":14*C_count ,"N":3*C_count , "O":8*C_count , "P":"P", "molecular weight":227*C_count }

这段代码不起作用,但我希望它仍然保持字典的格式,但是只输出新值,旧键仍然保持原样。我觉得有一个非常简单的方法可以做到这一点,但我只是错过了我的知识基础。另外,我知道biopython,但我只是想给自己更多的代码来使用和理解,这对我来说更像是一次学习的经历


Tags: 代码newfor字典countcodeonedict
1条回答
网友
1楼 · 发布于 2024-06-16 09:38:45

下面的代码演示如何使用与旧词典相同的键创建新词典,但使用不同的值:

d1 = {
    "apple":1,
    "banana":2,
    "kiwi":3
}
d2 = dict.fromkeys(d1)
for key in d1.keys():
    d2[key] = d1[key]*70 +45
print(d1)
print(d2)

输出为:

{'apple': 1, 'banana': 2, 'kiwi': 3}
{'apple': 115, 'banana': 185, 'kiwi': 255}

下面的代码显示了在给定每个字母的特定重量的情况下,如何计算dna链的总分子量。请注意,下面显示的数字是错误的,但您可以更改这些数字:

strand = "CCGTCACCGGCCAACAGTGTGC"

weights = {
    "C":1,
    "G":2,
    "T":3,
    "A":4
}

lamb = lambda letter: weights[letter]
strand_total_weight = sum(map(lamb, strand))
print(strand_total_weight) # prints `46`

相关问题 更多 >