我正尝试用两个字典中更新的键和值创建一个新字典。
我有两本字典:
r = {'seq1': 'cgatcgatacgatgcgatgctagatcgagtgcatcgcggcgccgcgcgcgcatgcagcagctacgatgcattaatccgatcgatcgagtacgatata', 'seq2':'cgatcgatacgatgcgatgctagatcgagtgcatcgcggcgccgcgcgcgcatgcagcagctacgatgcattaatccgatcgatcgagt', 'seq3':'cgatcgatacgatgcgatgctagatcgagtgcatcgcggcgccgcgcgcgcatgcagcagctacgatgcattaatccgatcgatcgagtacgatatataatatacgatcagctagcc'}
pr = {'seq1': [(124, 22), (114, 22)],
'seq2': [(100, 22)],
'seq3': [(124, 22)]}
这是我的当前代码:
for key, val in r.items():
for val2 in pr.values():
print({'name': key, 'size': len(val), 'p_list' : val2})
输出如下:
{'name': 'seq1', 'size': 163, 'p_list': [(124, 22), (114, 22)]}
{'name': 'seq1', 'size': 163, 'p_list': [(100, 22)]}
{'name': 'seq1', 'size': 163, 'p_list': [(124, 22)]}
{'name': 'seq2', 'size': 163, 'p_list': [(124, 22), (114, 22)]}
{'name': 'seq2', 'size': 163, 'p_list': [(100, 22)]}
{'name': 'seq2', 'size': 163, 'p_list': [(124, 22)]}
{'name': 'seq3', 'size': 215, 'p_list': [(124, 22), (114, 22)]}
{'name': 'seq3', 'size': 215, 'p_list': [(100, 22)]}
{'name': 'seq3', 'size': 215, 'p_list': [(124, 22)]}
我希望输出如下所示:
{'name': 'seq1', 'size': 163, 'p_list': [(124, 22), (114, 22)]}
{'name': 'seq2', 'size': 163, 'p_list': [(100, 22)]}
{'name': 'seq3', 'size': 163, 'p_list': [(124, 22)]}
我认为这个问题是由于我的嵌套for循环,但无论如何排列,我似乎都不能让它工作。我也尝试过使用.update()
方法,但它对我也不起作用。任何建议都很感激!
2条答案
按热度按时间oknwwptz1#
您可以使用带有
zip
的列表解析来对相应的元素进行分组。如果两个指令之间的密钥相同,那么您只需要循环一个指令的项目。
insrf1ej2#
如果您知道两个字典的键总是相同的,那么您只需遍历其中一个字典,然后使用键访问第二个字典的值。