Python: extrae los valores de las claves selectivas, incluidas las claves anidadas

A veces, mientras trabajamos con los diccionarios de Python, podemos tener un problema en el que necesitamos extraer los valores de las claves selectivas. Este problema se resolvió anteriormente, pero a veces podemos tener múltiples anidamientos y ciertas claves pueden estar presentes en los registros internos. Este problema atiende todos los anidamientos para la extracción de valores de claves. Vamos a discutir cierta forma en que esta tarea se puede resolver.
 

Entrada
test_dict = {‘gfg’: {‘geeks’: {‘best’ : 3}}} 
key_list = [‘best’, ‘geeks’] 
Salida : {‘geeks’: {‘best’: 3}, ‘ mejor’: 3}
Entrada
test_dict = {‘gfg’: {‘geek’: {‘bueno’: 3}}} 
key_list = [‘mejor’, ‘geeks’] 
Salida : {} 
 

Método: Usar recursión + bucle + rendimiento 
La combinación de las funcionalidades anteriores se puede usar para resolver este problema. En esto, realizamos la tarea de verificar la clave usando declaraciones condicionales y verificamos anidamientos usando recursividad. El operador de rendimiento se usa para devolver dinámicamente la clave para la asignación a medida que ocurre.
 

Python3

# Python3 code to demonstrate working of
# Extract selective keys' values [ Including Nested Keys ]
# Using recursion + loop + yield
 
def get_vals(test_dict, key_list):
   for i, j in test_dict.items():
     if i in key_list:
        yield (i, j)
     yield from [] if not isinstance(j, dict) else get_vals(j, key_list)
 
# initializing dictionary
test_dict = {'gfg': {'is': {'best' : 3}}, 'for': {'all' : 4}, 'geeks': 5}
 
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
 
# initializing keys list
key_list = ['best', 'geeks']
 
# Extract selective keys' values [ Including Nested Keys ]
# Using recursion + loop + yield
res = dict(get_vals(test_dict, key_list))
 
# printing result
print("The extracted values : " + str(res))
Producción : 

The original dictionary is : {'gfg': {'is': {'best': 3}}, 'for': {'all': 4}, 'geeks': 5}
The extracted values : {'best': 3, 'geeks': 5}

 

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 *