如何将两个Python字典合并为二维字典:以dict2的键作为dict1的列表值
如何根据字典列表值合并两个字典生成二维字典?
我有两个字典:
dict1 = {'key1':['val1','val2','val3']} dict2 = {'val1':['a','b','c']}
我想要生成第三个二维字典:
dict3 = {'key1': {'val1':['a','b','c']} }
简单来说就是合并这两个字典,用第一个字典里列表中的值作为第二个字典的键,构建对应的嵌套结构。我试过用嵌套循环:
for key1, val1 in dict1.items(): for key2, val2 in dict2.items(): # 这里不知道该怎么写操作
但目前还没成功实现想要的效果,请问该怎么解决?
嘿,这个问题其实很好解决,我们只要调整一下循环的逻辑,不用盲目遍历整个dict2,而是精准检查dict1列表里的值是否存在于dict2的键中就行。
给你一个直接可用的实现代码:
dict1 = {'key1':['val1','val2','val3']} dict2 = {'val1':['a','b','c']} dict3 = {} for main_key, sub_values in dict1.items(): # 先给主键在dict3里初始化一个空字典,用来存嵌套内容 dict3[main_key] = {} for sub_val in sub_values: # 检查当前子值是否是dict2的键 if sub_val in dict2: # 如果匹配上,就把dict2对应的键值对塞进去 dict3[main_key][sub_val] = dict2[sub_val] print(dict3) # 输出结果: {'key1': {'val1': ['a', 'b', 'c']}}
思路拆解:
- 先遍历
dict1的每一组键值对,拿到主键(比如key1)和对应的列表值 - 为主键在
dict3里创建一个空字典,作为嵌套结构的容器 - 接着遍历
dict1列表里的每个元素,逐一检查这个元素是不是dict2的键 - 只要匹配成功,就把
dict2里对应的键值对添加到dict3的嵌套字典中
这个逻辑还很灵活,如果后续dict1的列表里有多个值能在dict2里找到对应键,比如dict2新增'val2': ['d','e'],结果会自动变成{'key1': {'val1': ['a','b','c'], 'val2': ['d','e']}},完全适配扩展场景。
内容的提问来源于stack exchange,提问作者user3552459
相关产品推荐
相关产品推荐

