遍历字典并从多个字典创建新字典

时间:2021-03-17 16:55:41

标签: python loops dictionary

我正在尝试从三个字典创建一个新字典,其中“字段”键不重复,而 LON 和 LAX 是顶级键。

dict1 = {"LON": {'fields': 
                {'country': 'England', 
                 'weather': 'rainy'}},
         "LAX": {'fields': 
                {'country': 'America', 
                 'weather': 'sunny'}}}

dict2 = {'fields': {'color' : 'red', 'movie' : 'yes'}}

dict3 = {"LON": {'fields': 
                {'time-zone': 'CET', 
                 'description': ''}},
         "LAX": {'fields': 
                {'time-zone': 'UTC', 
                 'description': ''}}}

新词典将如下所示:

**EDIT 在原帖中,newdict 中缺少 dict3 'field' 值,此后我已更正了这一点。

newdict = {"LON": {'fields': 
                  {'country': 'England', 
                   'weather': 'rainy',
                   'color' : 'red',
                   'movie' : 'yes'
                   'time-zone': 'CET', 
                   'description': ''}}
           "LAX": {'fields': 
                  {'country': 'America', 
                   'weather': 'sunny',
                   'color' : 'red'
                   'movie' : 'yes'
                   'time-zone': 'UTC', 
                   'description': ''}}}

我已经尝试了以下解决方案,但它没有摆脱重复的“字段”,而且我无法弄清楚如何合并 dict2。对于不同方法的任何帮助或想法将不胜感激因为我在这方面还没有走得很远。

result = {}
for key in (dict1.keys() | dict3.keys()):
   if key in dict1: result.setdefault(key, []).append(dict1[key])
   if key in dict3: result.setdefault(key, []).append(dict3[key])
print(result)

1 个答案:

答案 0 :(得分:0)

您可以使用 for 循环遍历字典中的键值对,使用 Update 方法可以将 dict2 中的键值对添加到 dict1。

update() 方法将指定的项目插入到字典中。

指定的项可以是字典,也可以是具有键值对的可迭代对象。

 for k,v in dict1.items():
        for a, b in v.items():
            for x , y in dict2['fields'].items():            
                dict1[k][a].update({x : y})
    print(dict1)
相关问题