合并字典列表,同时合并相似ke的值

时间:2018-11-28 09:43:00

标签: python python-2.7 list dictionary

我需要创建一个接受字典列表并返回其总和的函数

例如

  • 200中,它需要返回[{(1,3):2, (2,7):1} , {(1,3):6}]
  • 如果它们的总和为{(1,3): 8, (2,7): 1},则会从 字典。这里的问题是它返回0

[(1, 3), 6]

2 个答案:

答案 0 :(得分:1)

您的代码很难跟一个字母的变量名一起使用,所以我写了一些新的东西,我认为它可以满足您的要求:

def merge_dictionaries(list_of_dictionaries):
    results_dict = dict()
    for dictionary in list_of_dictionaries:
        for key, value in dictionary.items():
            results_dict[key] = results_dict.get(key, 0) + value

    return {key: value for (key, value) in results_dict.iteritems() if value != 0}


print merge_dictionaries([{(1,3):2, (2,7):1} , {(1,3):6 , (9,9) : 0}])
>>> {(2, 7): 1, (1, 3): 8}

它会遍历列表中的每个字典,并将该值加到到目前为止的总和中,然后过滤掉最后总和为0的答案。

答案 1 :(得分:0)

可能您正在寻找这样的东西:

def swe(lst):
    res = dict()
    for d in lst:
        for key,value in d.items():
            if key in res:
                res[key] += value
            else:
                res[key] = value

    for key,value in res.items():
        if value == 0:
            res.pop(key)

    return res