You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何合并两个字典,按对应键生成目标结构的字典?

解决字典匹配生成新字典的问题

问题背景

现有两个字典,r存储序列字符串,pr存储对应序列的参数列表:

r = {'seq1': 'cgatcgatacgatgcgatgctagatcgagtgcatcgcggcgccgcgcgcgcatgcagcagctacgatgcattaatccgatcgatcgagtacgatata', 'seq2':'cgatcgatacgatgcgatgctagatcgagtgcatcgcggcgccgcgcgcgcatgcagcagctacgatgcattaatccgatcgatcgagt', 'seq3':'cgatcgatacgatgcgatgctagatcgagtgcatcgcggcgccgcgcgcgcatgcagcagctacgatgcattaatccgatcgatcgagtacgatatataatatacgatcagctagcc'}

pr = {'seq1': [(124, 22), (114, 22)],
 'seq2': [(100, 22)],
 'seq3': [(124, 22)]}

当前代码用嵌套循环遍历,导致每个r的键都匹配了pr的所有值,输出出现冗余:

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': 161, 'p_list': [(100, 22)]}
{'name': 'seq3', 'size': 215, 'p_list': [(124, 22)]}

解决方法

核心问题是嵌套循环错误遍历了pr的所有值,没有根据key做对应匹配。直接通过当前遍历的key从pr中获取对应值即可:

修正后的代码

for key, val in r.items():
    # 通过key直接获取pr中对应的参数列表
    p_list = pr[key]
    print({'name': key, 'size': len(val), 'p_list': p_list})

运行结果

{'name': 'seq1', 'size': 163, 'p_list': [(124, 22), (114, 22)]}
{'name': 'seq2', 'size': 161, 'p_list': [(100, 22)]}
{'name': 'seq3', 'size': 215, 'p_list': [(124, 22)]}

容错处理(可选)

如果r中存在pr没有的键,直接用pr[key]会抛出KeyError,可以改用get方法返回默认空列表:

for key, val in r.items():
    p_list = pr.get(key, [])
    print({'name': key, 'size': len(val), 'p_list': p_list})

内容的提问来源于stack exchange,提问作者bhumm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:01:28