我有2个词典,我想合并。我想合并相同的键,我想保留两个字典的值。
我使用dict1.update(dict2)
但是将值替换为第2个到第1个字典。
u'dict1', {160: {u'na': u'na'}, 162: {u'test_': u'qq', u'wds': u'wew'}, 163: {u'test_env': u'test_env_value', u'env': u'e'}, 159: {u'no' : u'test_no'}
u'dict2', {160: {u'naa': u'na'}, 162: {u'envi_specs': u'qq', u'wds': u'wew'}, 163: {u'test_env': u'test_env_value', u'ens': u's'}}
我得到了什么?
{160: {u'naa': u'na'}, 162: {u'envi_specs': u'qq', u'wds': u'wew'}, 163: {u'test_env': u'test_env_value', u'ens': u's'}}
我需要什么
{160: {u'naa': u'na', u'na': u'na'}, 162: {u'envi_specs': u'qq', u'wds': u'wew', u'test_': u'qq'}, 163: {u'test_env': u'test_env_value', u'ens': u's', u'env': u'e'}}
我跟着merging "several" python dictionaries,但我需要合并两个不同的词典。请帮忙......
答案 0 :(得分:4)
循环dict1
中的键,并从dict2
中检索相应的值,然后更新 -
for k in dict1:
dict1[k].update(dict2.get(k, {})) # dict1.get(k).update(dict2.get(k, {}))
print(dict1)
{
"160": {
"naa": "na",
"na": "na"
},
"162": {
"wds": "wew",
"test_": "qq",
"envi_specs": "qq"
},
"163": {
"test_env": "test_env_value",
"ens": "s",
"env": "e"
},
"159": {
"no": "test_no"
}
}
在这里,我使用dict.get
因为它允许您指定在k
作为dict2
中的密钥不存在的情况下返回的默认值。在这种情况下,默认值为空字典{}
,并且调用dict.update({})
不执行任何操作(并且不会导致任何问题)。