python词典 - 结合价值观

时间:2017-12-04 17:37:33

标签: python dictionary

我有这些词典

{
    'id': 5,
    'quantity: 10
}

{
    'id': 5,
    'quantity: 15
}

我想要这样的东西

{
    'id': 5,
    'quantity': 25
}

编辑:基本上,我想要结合类似ids的数量 对不起,如果我过多地简化了我的问题。是的我有这些词汇的清单

products = [{...}, {...}, {...}, ...]

2 个答案:

答案 0 :(得分:0)

这是一个简单的解决方案,它使用for循环迭代dic1中的每个键

dic1 = {'id': 5, 'quantity': 10}
dic2 = {'id': 5, 'quantity': 15}

for key in dic1:
    if key in dic2:
        dic1[key] += dic2[key]

答案 1 :(得分:-1)

你可以使用词典理解。

d = {key: dict1[key] + dict2[key] for key in dict1}

当且仅当您的词典具有完全相同的键时,这将起作用。在更复杂的情况下,您要么拥有无人代表的密钥,要么抛出KeyError。如果这是一个问题,您可以尝试使用collections.Counter个对象(通过将整数的默认值设置为0来避免KeyError)或者只是重构代码并将其分解为循环以获得您需要的内容

如果dicts有可能具有不同的ID,这将有效:

from collections import Counter
c1 = Counter(dict1)

for key in dict2:
   c1[key] += dict2[key]

c1是你加入的词汇。如果dict1的密钥不在dict2中,则它们将从初始化步骤显示在c1中。如果dict2的密钥不在dict1中,则会将其添加到c1而不进行修改。