Python | Claves de diccionario anidadas de acceso seguro

A veces, mientras trabajamos con Python, podemos tener un problema en el que necesitamos obtener la clave de segundo grado del diccionario, es decir, la clave anidada. Este tipo de problema es común en el caso del desarrollo web, especialmente con la llegada de las bases de datos NoSQL. Analicemos ciertas formas de obtener de manera segura la clave disponible anidada en el diccionario.

Método n. ° 1: usar anidadoget()

Este método se usa para resolver este problema en particular, solo aprovechamos la funcionalidad de get()verificar y asignar en ausencia de valor para lograr esta tarea en particular. Simplemente devuelve Ninguno sin error si alguna clave no está presente.

# Python3 code to demonstrate working of
# Safe access nested dictionary key
# Using nested get()
  
# initializing dictionary
test_dict = {'Gfg' : {'is' : 'best'}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# using nested get()
# Safe access nested dictionary key
res = test_dict.get('Gfg', {}).get('is')
  
# printing result
print("The nested safely accessed value is :  " + str(res))
Producción :

The original dictionary is : {'Gfg': {'is': 'best'}}
The nested safely accessed value is :  best

Método #2: Usar reduce()+ lambda

La combinación de las funciones anteriores se puede utilizar para realizar esta tarea en particular. Simplemente verifica usando la función lambda para las teclas disponibles. La ventaja de este método es que se puede consultar más de 1 clave a la vez, es decir, más claves de nivel anidadas, pero la desventaja es que solo funciona con Python2.

# Python code to demonstrate working of
# Safe access nested dictionary key
# Using reduce() + lambda
  
# initializing dictionary
test_dict = {'Gfg' : {'is' : 'best'}}
  
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
  
# using reduce() + lambda
# Safe access nested dictionary key
keys = ['Gfg', 'is']
res = reduce(lambda val, key: val.get(key) if val else None, keys, test_dict)
  
# printing result
print("The nested safely accessed value is :  " + str(res))
Producción :

The original dictionary is : {'Gfg': {'is': 'best'}}
The nested safely accessed value is :  best

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 *