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

如何将两个Python字典按关联键值合并为嵌套字典?

解决方案

方法一:字典推导式(简洁高效)

用嵌套的字典推导式一步生成目标字典,这是Python中最简洁的实现方式:

d1 = {'a': ['b','c'], 'd': ['e', 'f']}
d2 = {'b':[1, 2], 'c': [3, 4], 'd': [5, 6], 'e': [7, 8], 'f': [9, 10]}

d3 = {k: {sub_k: d2[sub_k] for sub_k in v} for k, v in d1.items()}
print(d3)
# 输出: {'a': {'b': [1, 2], 'c': [3, 4]}, 'd': {'e': [7, 8], 'f': [9, 10]}}

外层遍历d1的所有键值对,内层遍历每个键对应的子键列表,从d2中取出对应值构建子字典。

方法二:普通嵌套循环(直观易懂)

如果更倾向于分步实现,嵌套循环能清晰展示每一步逻辑:

d1 = {'a': ['b','c'], 'd': ['e', 'f']}
d2 = {'b':[1, 2], 'c': [3, 4], 'd': [5, 6], 'e': [7, 8], 'f': [9, 10]}

d3 = {}
# 遍历d1的主键和对应的子键列表
for main_key, sub_keys in d1.items():
    # 初始化当前主键对应的子字典
    sub_dict = {}
    # 遍历子键,从d2中取值填充子字典
    for sub_key in sub_keys:
        sub_dict[sub_key] = d2[sub_key]
    # 将子字典赋值给d3的主键
    d3[main_key] = sub_dict

print(d3)
# 输出: {'a': {'b': [1, 2], 'c': [3, 4]}, 'd': {'e': [7, 8], 'f': [9, 10]}}

补充:避免键不存在的报错

如果d1的子键可能在d2中不存在,可用d2.get(sub_key, 默认值)规避KeyError,示例:

# 以空列表作为默认值
d3 = {k: {sub_k: d2.get(sub_k, []) for sub_k in v} for k, v in d1.items()}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 17:15:38