Python: suma de valores de diccionario anidado

A veces, mientras trabajamos con diccionarios de Python, podemos tener problemas en los que tenemos registros anidados y necesitamos una suma acumulativa de sus valores clave. Esto puede tener una posible aplicación en dominios como el desarrollo web y la programación competitiva. Analicemos ciertas formas en que se puede realizar esta tarea.

Método n.º 1: Usar loop +items() + values()
La combinación de las funcionalidades anteriores se puede usar para resolver este problema. En esto, iteramos a través de todos los valores extraídos usando valores() y realizamos la tarea de suma.

# Python3 code to demonstrate working of 
# Nested Dictionary values summation
# Using loop + items() + values()
  
# initializing dictionary
test_dict = {'gfg' : {'a' : 4, 'b' : 5, 'c' : 8},
             'is' : {'a' : 8, 'c' : 10},
             'best' : {'c' : 19, 'b' : 10}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# Nested Dictionary values summation
# Using loop + items() + values()
res = dict()
for sub in test_dict.values():
    for key, ele in sub.items():
        res[key] = ele + res.get(key, 0)
  
# printing result 
print("The summation dictionary is : " + str(res)) 
Producción :

El diccionario original es: {‘gfg’: {‘a’: 4, ‘b’: 5, ‘c’: 8}, ‘best’: {‘b’: 10, ‘c’: 19}, ‘is ‘: {‘a’: 8, ‘c’: 10}}
El diccionario de sumatoria es: {‘a’: 12, ‘b’: 15, ‘c’: 37}

Método #2: UsoCounter() + values()
La combinación de los métodos anteriores se puede utilizar para realizar esta tarea. En esto, guardamos la frecuencia requerida usando Counter() y la extracción de valores se puede hacer usando values().

# Python3 code to demonstrate working of 
# Nested Dictionary values summation
# Using Counter() + values()
from collections import Counter
  
# initializing dictionary
test_dict = {'gfg' : {'a' : 4, 'b' : 5, 'c' : 8},
             'is' : {'a' : 8, 'c' : 10},
             'best' : {'c' : 19, 'b' : 10}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# Nested Dictionary values summation
# Using Counter() + values()
res = Counter()
for val in test_dict.values():
    res.update(val)
      
# printing result 
print("The summation dictionary is : " + str(dict(res))) 
Producción :

El diccionario original es: {‘gfg’: {‘a’: 4, ‘b’: 5, ‘c’: 8}, ‘best’: {‘b’: 10, ‘c’: 19}, ‘is ‘: {‘a’: 8, ‘c’: 10}}
El diccionario de sumatoria es: {‘a’: 12, ‘b’: 15, ‘c’: 37}

Publicación traducida automáticamente

Artículo escrito por manjeet_04 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 *