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