python - 如何在python中组合字典

标签 python django

我有两本字典

dict1 = {'color': {'attri': ['Black']}, 'diameter': {'attri': ['(300, 600)']}}

dict2 = {'size': {'op':'in'}, 'diameter': {'op':'range'}, 'color': {'op':'in'}}

我想合并 2 个字典,这样

dict3 = {'color': {'op': 'in', 'attri': ['Black']}, 'diameter': {'op': 'range', 'attri': ['(300,600)']}}

最佳答案

此方法使用 defaultdict,即使键只出现在其中一个字典中也是安全的。

import itertools
import collections

dict3 = collections.defaultdict(dict)

for key, value in itertools.chain(dict1.items(), dict2.items()):
     dict3[key].update(value)

证明——应用于:

dict1 = {'color': {'attri':['Black']}, 'diameter': {'attri':['(300, 600)']}}
dict2 = {'size': {'op':'in'}, 'diameter': {'op':'range'}, 'color': {'op':'in'}}

dict(dict3) 的输出是:

{'color': {'attri': ['Black'], 'op': 'in'},
'diameter': {'attri': ['(300, 600)'], 'op': 'range'},
'size': {'op': 'in'}}

虽然查看了您的预期输出,但如果键同时出现在两个词典中,您只需要一个结果,在这种情况下我会这样做:

dict3 = {key: {**dict1[key], **dict2[key]} 
         for key in dict1.keys() & dict2.keys()}

关于python - 如何在python中组合字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50716437/

相关文章:

python - jinja2 将阿拉伯语传递给 render_template

javascript - 如何使用 Django 模板和 RequireJS 缩小 JS

python - 如何使用基于类的模型在 django 管理表单中制作自动完成过滤器

python - Django: AttributeError: 'Q' 对象没有属性 'count'

mysql - manage.py inspectdb 和枚举

python - 重新训练 MobileNet SSD V1 COCO 后,Tensorflow 的 pb 和 pbtxt 文件不适用于 OpenCV

python - 包装一个函数隐藏它的属性?

Django 按组计数

python - 为什么我的 OpenGL 程序无法加载 GLUT 位图字体?

python - 按组和特定值之间的数据帧绘制图表