所以我在词典中有2个词典。 我需要根据外部词典的键添加2个内部词典的值。 E.g。
Dict1 = {A:{1:10,2:20},B:{1:15,2:30},C:{1:2,2:12},D:{1:15,2:40}}
Dict2 = {A:{1:30,2:10},B:{1:10,2:20},C:{1:30,2:20},E:{1:5,2:10}}
因此,我必须将Dict1中的1s值添加到Dict2的2s值。 例如,对于来自两个字典的密钥A,从Dict1和2s中添加1s的值形成Dict2:10 + 10 = 20,反之亦然,即Dict1 + 2s的2s:20 + 30 = 50并创建新的字典:{答:{up:20,down = 50}}
所以期望的输出是:
Final_dict = {A:{up:20,down:50},B:{up:35,down:40},c:{up:22,down:42},D:{up:15,down:40},E:{up:10,down:5}}
或者只是为每次添加创建单独的词典:
Up_Dict = {A:20,B:35,C:22,D:15,E:10}
Down_Dict = {A:50,B:40,C:42,D:40,E:5}
实现这一添加的最佳方式是什么,因为我拥有的两个词典都很庞大?
比你!!
答案 0 :(得分:0)
您可以使用一些词典理解。我首先使用缺少的键填充两个词典,然后返回具有所需总和的字典。
keys = set(Dict1.keys()+Dict2.keys())
dic1 = {k:Dict1[k] if k in Dict1 else {1:0, 2:0} for k in keys}
dic2 = {k:Dict2[k] if k in Dict2 else {1:0, 2:0} for k in keys}
out = {k:{'up': dic1[k][1]+dic2[k][2], 'down': dic2[k][1]+dic1[k][2]} for k in keys}
这给出了以下输出:
{'A': {'down': 50, 'up': 20},
'B': {'down': 40, 'up': 35},
'C': {'down': 42, 'up': 22},
'D': {'down': 40, 'up': 15},
'E': {'down': 5, 'up': 10}}
答案 1 :(得分:0)
尝试这可能是最糟糕的方式
keys = Dict1.keys()+Dict2.keys()
>>>[{i:{"up":Dict1[i][1] if i in Dict1 else 0 + \
Dict2[i][2] if i in Dict2 else 0,"down": Dict1[i][2] \
if i in Dict1 else 0 + Dict2[i][1] if i in Dict2 else 0 }} \
for i in set(keys)]
[{'A': {'down': 20, 'up': 10}},
{'C': {'down': 12, 'up': 2}},
{'B': {'down': 30, 'up': 15}},
{'E': {'down': 5, 'up': 10}},
{'D': {'down': 40, 'up': 15}}]