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))
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)))
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