从另一个字典中为相同的键添加属性而不覆盖

时间:2016-11-17 14:51:09

标签: python dictionary

假设我有两个词典:

d1 = {'a': 2, 'b': 4, 'c': 5, 'd': 6}
d2 = {'a': 5, 'c': 4, 'e': 8}

迭代第二个:

for k, v in d2.items():

我想在d1中检查密钥是否存在,如果是,那么将该值作为属性添加到密钥中,如果没有,则将其添加到字典中,以便我想要:

d1 = {'a': [2, 5], 'b': 4, 'c': [4, 5], 'd': 6, 'e': 8}

我知道如何使用IN运算符检查是否存在,但无法知道如何使用新属性更新dict。 请记住,我刚刚提出了一个简单的问题案例,它将在一个循环内,这意味着一个键可以有多个属性,而不仅仅是1或2。

谢谢。

1 个答案:

答案 0 :(得分:3)

字典中的一个键不能有两个值。为此,您需要将值作为一个列表添加到" real"该键的值。

for k,v in d2.items():
    if k in d1:
        if isinstance(d1[k], list):
            d1[k].append(v)
        else:
            d1[k] = [d1[k], v]

    else:
        d1[k] = v

然而,这似乎更直接:

for k,v in d2.items():
    if k in d1:
        d1[k].append(v)

    else:
        d1[k] = [v]

更新

字典值的总和,假设您唯一需要的是总和:

使用以下代码

替换代码

for k,v in d2.items():
    if k in d1:
        d1[k] = [sum(d1[k] + [v])]

    else:
        d1[k] = [v]