python - 在 Python 中总结 2 级嵌套字典

标签 python dictionary summary

我有 2 个嵌套的字典变量,它们具有相似的键,每个定义不同的值:

data1 = {
"2010":{
        'A':2,
        'B':3,
        'C':5
    },
"2011":{
        'A':1,
        'B':2,
        'C':3
    },
"2012":{
        'A':1,
        'B':2,
        'C':4
    }
}

data2 = {
"2010":{
        'A':4,
        'B':4,
        'C':5
    },
"2011":{
        'A':1,
        'B':1,
        'C':3
    },
"2012":{
        'A':3,
        'B':2,
        'C':4
    }
}

在我的例子中,我需要根据相同的键对两个字典值求和,所以答案将是这样的:

data3 = {
"2010":{
        'A':6,
        'B':7,
        'C':10
    },
"2011":{
        'A':2,
        'B':3,
        'C':6
    },
"2012":{
        'A':4,
        'B':4,
        'C':8
    }
}

我该怎么做?

最佳答案

鉴于这两个词典的结构相同,您可以为此使用词典理解:

data3 = {key:{key2:val1+data2[key][key2] for key2,val1 in subdic.items()} for key,subdic in data1.items()}

在回复中:

>>> {key:{key2:val1+data2[key][key2] for key2,val1 in subdic.items()} for key,subdic in data1.items()}
{'2010': {'B': 7, 'C': 10, 'A': 6}, '2012': {'B': 4, 'C': 8, 'A': 4}, '2011': {'B': 3, 'C': 6, 'A': 2}}

推导式工作如下:在外层循环中,我们遍历 data1key,subdic。因此,在您的情况下,key 是一年,subdic 是那一年的字典(data1)。

现在对于这些年中的每一年,我们迭代 subdic 的项目,这里 key2'A' 'B''C'val1 是我们在 data1 中为这些键找到的值。我们通过查询 data2[key][key2] 得到另一个值。我们总结这些并为此构建新的词典。

关于python - 在 Python 中总结 2 级嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226339/

相关文章:

Python 字典 : TypeError: list indices must be integers, 不是 str

python - 删除用作 dict 中 key 的对象不会删除 dict 中对应的 key

ruby-on-rails - Ruby on Rails 基本概念总结

r - Skimr - 似乎无法生成直方图

python - 如何将 DICOM 文件的 header 数据存储在 Pandas 数据框中?

python - 如何在seaborn中设置子图的标题和ylims

python - 有没有比使用 N^2 循环更快的插入 N^2 项的方法?

python - 为什么 dim=1 在 torch.argmax 中返回行索引?

c# - 使用排序的整数数组键快速查找整数索引值

python - Tensorflow中如何使用多个汇总集合?