Python | Summary list of dictionaries with the same key

| | | | | | | | | |

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}

Shop

Gifts for programmers

Best Python online courses for 2022

$FREE
Gifts for programmers

Best laptop for Excel

$
Gifts for programmers

Best laptop for Solidworks

$399+
Gifts for programmers

Best laptop for Roblox

$399+
Gifts for programmers

Best computer for crypto mining

$499+
Gifts for programmers

Best laptop for Sims 4

$
Gifts for programmers

Best laptop for Zoom

$499
Gifts for programmers

Best laptop for Minecraft

$590

Latest questions

PythonStackOverflow

Common xlabel/ylabel for matplotlib subplots

1947 answers

PythonStackOverflow

Check if one list is a subset of another in Python

1173 answers

PythonStackOverflow

How to specify multiple return types using type-hints

1002 answers

PythonStackOverflow

Printing words vertically in Python

909 answers

PythonStackOverflow

Python Extract words from a given string

798 answers

PythonStackOverflow

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

606 answers

PythonStackOverflow

Python os.path.join () method

384 answers

PythonStackOverflow

Flake8: Ignore specific warning for entire file

360 answers

News


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

How to specify multiple return types using type-hints

Printing words vertically in Python

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically