English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Manejo de claves ausentes en diccionarios de Python

En Python, hay un contenedor llamado diccionario. En el diccionario, podemos mapear claves a sus valores. Usar un diccionario permite acceder a los valores en tiempo constante. Sin embargo, si no existe la clave dada, podría ocurrir algún error.

En esta sección, veremos cómo manejar este tipo de errores. Si intentamos acceder a una clave perdida, podríamos obtener un error de este tipo.

Código de ejemplo

country_dict = {'India': 'IN', 'Australia': 'AU', 'Brazil': 'BR'}
print(country_dict['Australia'])
print(country_dict['Canada']) # Esto devolverá un error

Resultado de salida

AU
---------------------------------------------------------------------------
KeyErrorTraceback (última llamada reciente)
<ipython-input-2-a91092e7ee85> en <module>()
      2 
      3 print(country_dict['Australia'])
----> 4 print(country_dict['Canada'])# Esto devolverá un error
KeyError: 'Canada'

usarget()Method maneja KeyError

Podemos usar el método get para verificar la clave. Este método tiene dos parámetros. El primero es la clave y el segundo es el valor predeterminado. Después de encontrar la clave, regresará el valor asociado con la clave, pero si la clave no existe, regresará el valor predeterminado, que se pasa como segundo parámetro.

Código de ejemplo

country_dict = {'India': 'IN', 'Australia': 'AU', 'Brazil': 'BR'}
print(country_dict.get('Australia', 'No encontrado'))
print(country_dict.get('Canada', 'No encontrado'))

Resultado de salida

AU
No encontrado

usarsetdefault()Method maneja KeyError

elsetdefault()método es similar aget()método. También necesita dos parámetros, por ejemploget()。El primero es la clave, el segundo es el valor predeterminado. La única diferencia de este método es que, cuando falta la clave, agregará una nueva clave con el valor predeterminado.

Código de ejemplo

country_dict = {'India': 'IN', 'Australia': 'AU', 'Brazil': 'BR'}
country_dict.setdefault('Canada', 'No presente') #Establecer un valor predeterminado para Canadá
print(country_dict['Australia'])
print(country_dict['Canada'])

Resultado de salida

AU
No presente

Uso de defaultdict

defaultdict es un contenedor. Se encuentra en el módulo collections de Python. defaultdict usa el fabricante de valores por defecto como su parámetro. Originalmente, el fabricante de valores por defecto se establece en 0 (entero). Si no existe la clave, devolverá el valor del fabricante de valores por defecto.

No necesitamos especificar el método una y otra vez, por lo que proporciona métodos más rápidos para el objeto diccionario.

Código de ejemplo

import collections as col
#establecer el fabricante predeterminado con la cadena 'key not present'
country_dict = col.defaultdict(lambda: 'Clave no presente')
country_dict['India'] = 'IN'
country_dict['Australia'] = 'AU'
country_dict['Brazil'] = 'BR'
print(country_dict['Australia'])
print(country_dict['Canada'])

Resultado de salida

AU
Clave no presente