Python | Lista de suma de diccionarios con la misma clave

Ha dado una lista de diccionarios, la tarea es devolver un solo diccionario con valores de suma con la misma clave.

Vamos a discutir diferentes métodos para hacer la tarea.

Método #1: Usarreduce() + 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))
Producción:

diccionario inicial [{‘b’: 10, ‘a’: 5, ‘c’: 90}, {‘b’: 78, ‘a’: 45}, {‘a’: 90, ‘c’: 10} ]
diccionario resultante: {‘b’: 88, ‘a’: 140, ‘c’: 100}

 
Método #2: Usar el contador

# 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))
Producción:

diccionario inicial [{‘c’: 90, ‘a’: 5, ‘b’: 10}, {‘a’: 45, ‘b’: 78}, {‘a’: 90, ‘c’: 10} ]
diccionario resultante: contador ({‘a’: 140, ‘c’: 100, ‘b’: 88})

 
Método #3: Método Ingenuo

# 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))
Producción:

diccionario inicial [{‘b’: 10, ‘c’: 90, ‘a’: 5}, {‘b’: 78, ‘a’: 45}, {‘c’: 10, ‘a’: 90} ]
diccionario resultante: {‘b’: 88, ‘c’: 100, ‘a’: 140}

Publicación traducida automáticamente

Artículo escrito por garg_ak0109 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *