Manejo de claves faltantes en los diccionarios de Python

En Python, los diccionarios son contenedores que asignan una clave a su valor con una complejidad de tiempo de acceso O(1) . Pero en muchas aplicaciones, el usuario no conoce todas las claves presentes en los diccionarios. En tales casos, si el usuario intenta acceder a una clave que falta, aparece un error que indica que faltan claves
 

Python3

# Python code to demonstrate Dictionary and
# missing value error
 
# initializing Dictionary
d = { 'a' : 1 , 'b' : 2 }
 
# trying to output value of absent key
print ("The value associated with 'c' is : ")
print (d['c'])

Error : 
 

Traceback (most recent call last):
  File "46a9aac96614587f5b794e451a8f4f5f.py", line 9, in 
    print (d['c'])
KeyError: 'c'

En el ejemplo anterior, ninguna tecla llamada ‘c’ en el diccionario mostró un error de tiempo de ejecución. Para evitar tales condiciones, y para que el usuario sepa que una clave en particular está ausente o para mostrar un mensaje predeterminado en ese lugar, existen varios métodos para manejar las claves faltantes.

Método 1: Usando get()

El método get(key,def_val) es útil cuando tenemos que buscar la clave. Si la clave está presente, se imprime el valor asociado con la clave; de ​​lo contrario, se devuelve el def_value pasado en los argumentos.
 

Ejemplo: 

Python3

country_code = {'India' : '0091',
                'Australia' : '0025',
                'Nepal' : '00977'}
 
# search dictionary for country code of India
print(country_code.get('India', 'Not Found'))
 
# search dictionary for country code of Japan
print(country_code.get('Japan', 'Not Found'))

Producción: 

0091
Not Found

Método 2: Usar setdefault()

setdefault(key, def_value) funciona de manera similar a get(), pero la diferencia es que cada vez que falta una clave, se crea una nueva clave con el def_value asociado con la clave pasada en los argumentos.
 

Ejemplo: 

Python3

country_code = {'India' : '0091',
                'Australia' : '0025',
                'Nepal' : '00977'}
 
# Set a default value for Japan
country_code.setdefault('Japan', 'Not Present')
 
# search dictionary for country code of India
print(country_code['India'])
 
# search dictionary for country code of Japan
print(country_code['Japan'])

Producción: 
 

0091
Not Present

Método 3: Usando defaultdict

defaultdict ” es un contenedor que se define en un módulo llamado “ colecciones ”. Toma una función (de fábrica por defecto) como su argumento . De forma predeterminada, la configuración predeterminada de fábrica es «int», es decir, 0 . Si una clave no está presente en el dictado predeterminado, se devuelve y se muestra el valor predeterminado de fábrica. Tiene ventajas sobre get() o setdefault(). 
 

  • Se establece un valor predeterminado en la declaración . No es necesario invocar la función una y otra vez y pasar valores similares como argumentos. De ahí el ahorro de tiempo .
  • La implementación de defaultdict es más rápida que get() o setdefault(). 
     

 Ejemplo:

Python3

# Python code to demonstrate defaultdict
 
# importing "collections" for defaultdict
import collections
 
# declaring defaultdict
# sets default value 'Key Not found' to absent keys
defd = collections.defaultdict(lambda : 'Key Not found')
 
# initializing values
defd['a'] = 1
 
# initializing values
defd['b'] = 2
 
# printing value
print ("The value associated with 'a' is : ",end="")
print (defd['a'])
 
# printing value associated with 'c'
print ("The value associated with 'c' is : ",end="")
print (defd['c'])

Producción : 
 

The value associated with 'a' is : 1
The value associated with 'c' is : Key Not found

Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 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 *