Python: suma de claves anidadas personalizadas en el diccionario

Dado un diccionario con claves como diccionarios anidados, encuentre la suma de los valores de ciertas claves personalizadas dentro del diccionario anidado.

Entrada : test_dict = {‘Gfg’: {1: 6, 5: 9, 9: 12}, ‘es’: {1: 9, 5: 7, 9: 2}, ‘mejor’: {1: 3, 5: 4, 9: 14}}, sum_key = [1]
Salida : 18
Explicación : 6 + 9 + 3 = 18, solo se suman los valores con la clave 1.

Entrada : test_dict = {‘Gfg’: {1: 6, 5: 9, 9: 12}, ‘es’: {1: 9, 5: 7, 9: 2}, ‘mejor’: {1: 3, 5: 4, 9: 14}}, sum_key = [5, 9]
Salida : 48
Explicación : las teclas 5, 9 se suman.

Método #1: bucle

Esta es la forma bruta en la que se puede resolver este problema. En esto, empleamos un bucle para todos los elementos de la lista y seguimos actualizando el valor de la suma de todos los diccionarios anidados.

Python3

# Python3 code to demonstrate working of 
# Summation of Custom nested keys in Dictionary
# Using loop
  
# initializing dictionary
test_dict = {'Gfg' : {1 : 6, 5: 9, 9: 12},
             'is' : {1 : 9, 5: 7, 9: 2}, 
             'best' : {1 : 3, 5: 4, 9: 14}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# initializing sum keys 
sum_key = [1, 9]
  
sum = 0
for ele in sum_key:
    for key, val in test_dict.items():
          
        # extracting summation of required values
        sum = sum + val[ele]
  
# printing result 
print("The required summation : " + str(sum)) 
Producción

El diccionario original es: {‘Gfg’: {1: 6, 5: 9, 9: 12}, ‘is’: {1: 9, 5: 7, 9: 2}, ‘best’: {1: 3 , 5: 4, 9: 14}}
La suma requerida: 46

Método n.° 2: usar la comprensión de listas + sum()

La combinación de las funciones anteriores también se puede emplear para resolver este problema. En esto, realizamos la tarea de suma usando sum() y la lógica de descanso también se encapsula como una sola línea usando comprensión de lista.

Python3

# Python3 code to demonstrate working of 
# Summation of Custom nested keys in Dictionary
# Using list comprehension + sum()
  
# initializing dictionary
test_dict = {'Gfg' : {1 : 6, 5: 9, 9: 12},
             'is' : {1 : 9, 5: 7, 9: 2}, 
             'best' : {1 : 3, 5: 4, 9: 14}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# initializing sum keys 
sum_key = [1, 9]
  
# sum() used to get cumulative summation
res = sum([val[ele] for ele in sum_key for key, val in test_dict.items()])
  
# printing result 
print("The required summation : " + str(res)) 
Producción

El diccionario original es: {‘Gfg’: {1: 6, 5: 9, 9: 12}, ‘is’: {1: 9, 5: 7, 9: 2}, ‘best’: {1: 3 , 5: 4, 9: 14}}
La suma requerida: 46

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 *