Let’s discuss the different methods to accomplish the task.
Method # 1: Using reduce () + operator
# Python code for demonstration # return the sum of the dictionary values ‚Äã‚Äã # with the same keys in the dictionary list import collections, functools, operator # Initializing dictionary list ini_dict = [{ ’ a’ : 5 , ’b’ : 10 , ’ c’ : 90 }, { ’a’ : 45 , ’b’ : 78 }, { ’a’ : 90 , ’c’ : 10 }] # print the source dictionary print ( "initial dictionary" , str (ini_dict)) # sum the values ‚Äã‚Äãwith the 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 a counter
# Python code for demonstration # return the sum of the dictionary values ‚Äã‚Äã # with the same keys in the dictionary list import collections # Initializing dictionary list ini_dict = [{ ’a’ : 5 , ’b’ : 10 , ’c’ : 90 }, { ’a’ : 45 , ’ b’ : 78 }, { ’a’ : 90 , ’c’ : 10 }] # print the source dictionary print ( " initial dictionary " , str (ini_dict)) # summarize the values with the same keys counter = collections.Counter () for d in ini_dict: counter.update (d) result = dict (counter) print ( "resultant dictionary:" , str ( counter)) |
Exit:
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 for demonstration # return the sum of values dictionary # with the same keys in the dictionary list from operator import itemgetter # Initializing dictionary list ini_dict = [{ ’ a’ : 5 , ’b’ : 10 , ’c’ : 90 }, { ’a’ : 45 , ’b’ : 78 }, { ’a’ : 90 , ’c’ : 10 }] # print the original dictionary print ( "initial dictionary" , str (ini_dict)) # sum the values ‚Äã‚Äãwith the 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)) |
Exit:
initial dictionary [{’b ’: 10,’ c ’: 90,’ a ’: 5}, {’ b ’: 78,’ a ’: 45}, {’ c ’: 10,’ a ’: 90}]
resultant dictionary: {’b’: 88, ’c’: 100, ’a’: 140}