将两个词典合并为一个具有相同键的词典?

sea*_*cal 2 python dictionary

我在这里看了几个问题,但似乎没有一个问题.说我有2个字典,它们是dict1

{'A': 25 , 'B': 41, 'C': 32}
Run Code Online (Sandbox Code Playgroud)

和词典2

{'A':21, 'B': 12, 'C':62}
Run Code Online (Sandbox Code Playgroud)

我正在编写一个程序,我需要将它们与一个字典finaldict结合起来

{'A': [25 , 21], 'B': [41, 12], 'C': [32, 62]}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助,我一直在努力,现在暂时无处可去

the*_*eye 9

这是通用版本.这可以用于创建具有值作为列表的字典,即使该键仅存在于其中一个中.

dic1 = {'A': 25, 'B': 41, 'C': 32}
dic2 = {'A': 21, 'B': 12, 'C': 62}
result = {}
for key in (dic1.viewkeys() | dic2.keys()):
    if key in dic1: result.setdefault(key, []).append(dic1[key])
    if key in dic2: result.setdefault(key, []).append(dic2[key])

print result
Run Code Online (Sandbox Code Playgroud)

产量

{'A': [25, 21], 'C': [32, 62], 'B': [41, 12]}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Python 3,则必须像这样更改for循环.感谢Martijn :)

for key in (dic1.keys() | dic2.keys()):
Run Code Online (Sandbox Code Playgroud)


jon*_*rpe 6

如您所知,您的两个词典将始终具有相同的键,您可以使用:

finaldict = {key:(dict1[key], dict2[key]) for key in dict1}
Run Code Online (Sandbox Code Playgroud)

组合它们,其中每个值将是源字典值的元组.

  • 或者使用“for key in dict1.viewkeys() & dict2”仅对所有共享密钥进行循环(Python 3:“for key in dict1.keys() & dict2”)。 (2认同)