python - 合并两个2D字典python

标签 python dictionary merge 2d

我有两个 2D python 字典,我想获得一个 2D 字典,其中键是前两个字典键的并集,值是 1d 字典的串联。如果一维字典中存在重复键,我希望获得它们值的总和。

所以,假设我:

dict1 = { 1: {2: 0.1, 3: 0.3, 4: 0.4} , 
          2 :{1: 0.2, 3: 0.3, 4: 0.5} }
dict2 = { 2: {1: 0.1, 3: 0.8, 5: 0.4} , 
          3 :{1: 0.2, 2: 0.8, 4: 0.5} }

我期望的是:

merged_dict = { 1: {2: 0.1, 3: 0.3, 4: 0.4} , 
                2 :{1: 0.3, 3: 1.1, 4: 0.5 , 5: 0.4} , 
                3: {1: 0.2, 2: 0.8, 4: 0.5} }

我目前使用的是 python 3.2.3

最佳答案

这里没什么特别的,但你总是可以做类似的事情:

merged_dict = dict1.copy()

for key, val in dict2.iteritems():
    if key not in dict1:
        merged_dict[key] = val
    else:
        for key2, val2 in val.iteritems():
            if key2 not in dict1[key]:
                merged_dict[key][key2] = val2
            else:
                merged_dict[key][key2] += val2

(抱歉,这是 python 2.7)

此外,如果您想使用defaultdict:

from collections import defaultdict
merged_dict = defaultdict(dict)

for key, val in dict1.iteritems():
    merged_dict[key] = defaultdict(int, val)
for key, val in dict2.iteritems():
    if key not in merged_dict:
        merged_dict[key] = defaultdict(int, val)
    else:
        for key2, val2 in val.iteritems():
            merged_dict[key][key2] += val2

关于python - 合并两个2D字典python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33731985/

相关文章:

Python,安装失败。退出代码 : 1 windows 10

python - 如何使用python从facebook获取信息?

c# - 具有多个键和每个键的多个值的字典

svn - 合并后分支上提交日志会发生什么?

postgresql - 如何从 SpatialLite 合并到 PostGIS?

python - 在带有 os.system 的 python 脚本中正确使用 ssh 和 sed

python - 使用 Anaconda Python 3.5 在 Ubuntu 14.04 上安装 GDAL 时出现导入错误

python - 在字典中,将值从字符串转换为整数

java - 计算 Map Entry 的内存

javascript - 在 three.js 中合并几何