我有 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}}
推导式工作如下:在外层循环中,我们遍历 data1
的 key,subdic
。因此,在您的情况下,key
是一年,subdic
是那一年的字典(data1
)。
现在对于这些年中的每一年,我们迭代 subdic
的项目,这里 key2
是 'A'
, 'B'
和 'C'
。 val1
是我们在 data1
中为这些键找到的值。我们通过查询 data2[key][key2]
得到另一个值。我们总结这些并为此构建新的词典。
关于python - 在 Python 中总结 2 级嵌套字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42226339/