Skip to content
Related Articles

Related Articles

Python | Sum list of dictionaries with same key
  • Difficulty Level : Easy
  • Last Updated : 03 Mar, 2019

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




# 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




# 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




# 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}

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up
Recommended Articles
Page :