首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遍历字典并从多个字典创建新字典

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

Stack Overflow用户
提问于 2021-03-18 00:55:42
回答 1查看 35关注 0票数 0

我正在尝试从三个字典创建一个新的字典,其中‘field’键不重复,LON和LAX是顶级键。

代码语言:javascript
复制
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': ''}}}

新的字典应该是这样的:

**在原始帖子中编辑,newdict中缺少字段‘dict3’值,我已经更正了这个问题。

代码语言:javascript
复制
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': ''}}}

我已经尝试了下面的解决方案,但是它不能去掉重复的‘field’,而且我也不知道如何将dict2合并进来。任何对不同方法的帮助或想法都将非常感谢,因为我在这一点上并没有走得太远。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-18 01:11:09

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

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

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

代码语言:javascript
复制
 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66677720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档