在两个不同的词典中添加与相同键相关联的值

时间:2016-06-17 23:14:58

标签: python dictionary

我在这里看了几个问题,似乎没有一个问题。假设我有2个词典,它们是dict1

{'A': 25 , 'B': 41, 'C': 32}

dict2

{'D':21, 'A': 12, 'B':62}

我正在编写一个程序,我需要添加与相同键相关联的值。像这样:

{'A': [25 + 12], 'B': [41 + 62], 'C': [32], 'D': [21]}

3 个答案:

答案 0 :(得分:0)

我将假设您正在努力保留dict_1作为结果

for key in dict_1:
    if key in dict_2:
        dict_1[key] = dict_1[key] + dict_2[key]

需要复制存在于2但不包含在1

中的键值对
for key in dict_2:
    if key not in dict_1:
        dict_1[key] = dict_2[key]

这可能是最简单的方法

答案 1 :(得分:0)

>>> dict1= {'A':25,'B':41,'C':32}
>>> dict2= {'D':21, 'A':12, 'B':62}
>>> for e in dict2:
        if e in dict1:
            dict1[e]=dict1[e]+dict2[e]
        else:
            dict1[e]=dict2[e]

现在你的dict1成为你想要的答案。希望有所帮助。 :)

答案 2 :(得分:0)

我认为您在解决方案中缺少的是使用词典附带的keys - 方法和get - 方法。 keys - 方法将返回字典中键值对中所有键的列表。然而,get - 方法将返回与字典中的键相关联的值(如果存在),或返回默认值(默认为None)。

要做你想做的事,我建议这样的事情:

x = {'a': 1, 'b': 1, 'c': 1}              # dictionary x
y = {'c': 1, 'd': 1, 'e': 1}              # dictionary y
z = dict([
    (key, x.get(key, 0) + y.get(key, 0))  # key, sum(x,y)
    for key in                            # for every key in
    set(x.keys() + y.keys())              # the unique set of keys from x + y
])

步骤1:set(x.keys() + y.keys()) - 将两个键列表添加到一起并删除重复项(通过将其设置为一组)

步骤2:for key in - 循环遍历步骤#1

中集合中的每个键

步骤3:x.get(key, 0) + y.get(key, 0) - 对每个词典中与该键相关联的值求和;如果没有关联值,则使用0作为默认值

步骤#4:(key, ...) - 使用新的总和和原始密钥创建一个键值对

步骤#5:dict([...]) - 从键值对列表中创建一个新词典

这有意义吗?我希望有所帮助!