首页 文章

Python - 基于相同的键在字典中添加Dictionary的值

提问于
浏览
-1

所以我在词典中有2个词典 . 我需要根据外部词典的键添加2个内部词典的值 . 例如 .

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:20 30 = 50并创建新的字典:{A:{ 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}

什么是最好的方式来实现这个添加因为我拥有的两个词典都很庞大?

比你 !!

2 回答

  • 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}}
    
  • 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}}]
    

相关问题