Python 通过匹配键值连接两个DICT的值

Python 通过匹配键值连接两个DICT的值,python,Python,我有两本这样的字典: dict1 = {'foo': {'something':'x'} } dict2 = {'foo': {'otherthing':'y'} } 我想将这些值连接在一起,以便: dict3 = {'foo': {'something':'x', 'otherthing':'y'} } 我该怎么做 注意:两个dict始终具有匹配的键。您可以使用集合。defaultdict: >>> from collections import defaultdict

我有两本这样的字典:

dict1 = {'foo': {'something':'x'} }
dict2 = {'foo': {'otherthing':'y'} }
我想将这些值连接在一起,以便:

dict3 = {'foo': {'something':'x', 'otherthing':'y'} }
我该怎么做


注意:两个dict始终具有匹配的键。

您可以使用
集合。defaultdict

>>> from collections import defaultdict
>>> dic = defaultdict(dict)
for k in dict1:
    dic[k].update(dict1[k])
    dic[k].update(dict2[k])
...     
>>> dic
defaultdict(<type 'dict'>,
{'foo': {'otherthing': 'y', 'something': 'x'}
})
>>从集合导入defaultdict
>>>dic=默认dict(dict)
对于dict1中的k:
dic[k]。更新(dict1[k])
dic[k]。更新(dict2[k])
...     
>>>dic
defaultdict(,
{'foo':{'otherthing':'y','something':'x'}
})
您可以尝试使用:


他们只是使用两种不同的方式来合并dicts。

另一种选择,作为较短的单行词典:

{ k : dict(dict2[k].items() + v.items()) for k, v in dict1.items() }

也可以使用for循环完成此操作:

>>> dict3 = {}
>>> for x in dict1.keys():
        for y in dict1[x].keys():
            for z in dict2[x].keys():
                dict3[x] = {y: dict1[x][y], z: dict2[x][z]}

>>> dict3
{'foo': {'otherthing': 'y', 'something': 'x'}}

关于不匹配的键呢?这两个dict将始终具有相同的键但值不同。FWIW:
dict(kwargs,**dict)
是一个合并guido的两个dict的技巧。@AshwiniChaudhary。是的,我看到了。事实上,这就是我添加另一个选项的原因。
>>> dict3 = {}
>>> for x in dict1.keys():
        for y in dict1[x].keys():
            for z in dict2[x].keys():
                dict3[x] = {y: dict1[x][y], z: dict2[x][z]}

>>> dict3
{'foo': {'otherthing': 'y', 'something': 'x'}}