# Python | Sum list of dictionaries with same key

• Difficulty Level : Easy
• Last Updated : 07 Jan, 2023

You have given a list of dictionaries, the task is to return a single dictionary with sum values with the same key. Let’s discuss different methods to do the task.

Method #1: Using reduce() + operator

## Python3

 `# Python code to demonstrate``# return the sum of values of dictionary``# with same keys in list of dictionary` `import` `collections, functools, operator` `# Initialising list of dictionary``ini_dict ``=` `[{``'a'``:``5``, ``'b'``:``10``, ``'c'``:``90``},``            ``{``'a'``:``45``, ``'b'``:``78``},``            ``{``'a'``:``90``, ``'c'``:``10``}]`  `# printing initial dictionary``print` `("initial dictionary", ``str``(ini_dict))` `# sum the values with same keys``result ``=` `dict``(functools.``reduce``(operator.add,``         ``map``(collections.Counter, ini_dict)))` `print``("resultant dictionary : ", ``str``(result))`

Output:

initial dictionary [{‘b’: 10, ‘a’: 5, ‘c’: 90}, {‘b’: 78, ‘a’: 45}, {‘a’: 90, ‘c’: 10}] resultant dictionary : {‘b’: 88, ‘a’: 140, ‘c’: 100}

Method #2: Using counter

## Python3

 `# Python code to demonstrate``# return the sum of values of dictionary``# with same keys in list of dictionary` `import` `collections` `# Initialising list of dictionary``ini_dict ``=` `[{``'a'``:``5``, ``'b'``:``10``, ``'c'``:``90``},``            ``{``'a'``:``45``, ``'b'``:``78``},``            ``{``'a'``:``90``, ``'c'``:``10``}]` `# printing initial dictionary``print` `("initial dictionary", ``str``(ini_dict))` `# sum the values with same keys``counter ``=` `collections.Counter()``for` `d ``in` `ini_dict:``    ``counter.update(d)``    ` `result ``=` `dict``(counter)`  `print``("resultant dictionary : ", ``str``(counter))`

Output:

initial dictionary [{‘c’: 90, ‘a’: 5, ‘b’: 10}, {‘a’: 45, ‘b’: 78}, {‘a’: 90, ‘c’: 10}] resultant dictionary : Counter({‘a’: 140, ‘c’: 100, ‘b’: 88})

Method #3: Naive Method

## Python3

 `# Python code to demonstrate``# return the sum of values of dictionary``# with same keys in list of dictionary` `from` `operator ``import` `itemgetter` `# Initialising list of dictionary``ini_dict ``=` `[{``'a'``:``5``, ``'b'``:``10``, ``'c'``:``90``},``            ``{``'a'``:``45``, ``'b'``:``78``},``            ``{``'a'``:``90``, ``'c'``:``10``}]` `# printing initial dictionary``print` `("initial dictionary", ``str``(ini_dict))` `# sum the values with same keys``result ``=` `{}``for` `d ``in` `ini_dict:``    ``for` `k ``in` `d.keys():``        ``result[k] ``=` `result.get(k, ``0``) ``+` `d[k]`  `print``("resultant dictionary : ", ``str``(result))`

Output:

initial dictionary [{‘b’: 10, ‘c’: 90, ‘a’: 5}, {‘b’: 78, ‘a’: 45}, {‘c’: 10, ‘a’: 90}] resultant dictionary : {‘b’: 88, ‘c’: 100, ‘a’: 140}

Method: Using a dictionary comprehension

Another approach to sum the values of dictionaries with the same key in a list of dictionaries is to use a dictionary comprehension. This method is concise and can be easier to read than the other methods, depending on your personal preferences. Here’s an example of how you can use a dictionary comprehension to achieve the same result as the other methods:

## Python3

 `ini_dict ``=` `[{``'a'``:``5``, ``'b'``:``10``, ``'c'``:``90``},``            ``{``'a'``:``45``, ``'b'``:``78``},``            ``{``'a'``:``90``, ``'c'``:``10``}]` `# Create a dictionary with keys and values obtained by iterating over the keys in the dictionaries``# and summing the values for each key.``result ``=` `{k: ``sum``(d[k] ``for` `d ``in` `ini_dict ``if` `k ``in` `d) ``for` `k ``in` `set``(k ``for` `d ``in` `ini_dict ``for` `k ``in` `d)}` `print``(result)  ``# Output: {'b': 88, 'a': 140, 'c': 100}``#This code is contributed by Edula Vinay Kumar Reddy`

Output

`{'a': 140, 'c': 100, 'b': 88}`

The time complexity of this approach is O(n * m), where n is the number of dictionaries in the list and m is the average number of keys in each dictionary. This is because the dictionary comprehension iterates over all the keys in all the dictionaries and sums the values for each key.

The space complexity is also O(n * m), because the resulting dictionary will have at most n * m key-value pairs.

My Personal Notes arrow_drop_up