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'}}