En el post anterior presentamos el uso de los diccionarios en Python. Recordemos que cada elemento de los mismos consiste en un par clave-valor. Las claves (o llaves) deben ser únicas y se utilizan para acceder al valor correspondiente. Sin embargo, si se intenta utilizar una llave que no existe, Python devolverá un error del tipo KeyError. Para evitar esto, podemos utilizar las funciones get
y setdefault
para trabajar con las llaves en diccionarios. Veamos cómo a continuación.
Llaves en diccionarios
La funciónget
toma dos argumentos: el primero es la llave a buscar (si existe, devolverá el valor asociado) y el segundo el valor a devolver si dicha llave no se encuentra. Por otro lado, setdefault
creará la llave si no existe, junto con el valor correspondiente. Caso contrario, no provocará ningún cambio. Ilustremos estos distintos casos a continuación, en el que utilizamos un diccionario donde las claves representan personas y los valores las fechas de cumpleaños de cada una:
cumplesAmigos = { 'Mafalda': '19/05', 'Susanita': '11/12', 'Felipe': '5/02' } cumplesAmigos.get('Mafalda', ' no existe en la lista') # Ejemplo 1 cumplesAmigos.get('Manolito', ' no existe en la lista') # Ejemplo 2 cumplesAmigos.setdefault('Manolito', '10/07') # Ejemplo 3 cumplesAmigos.setdefault('Felipe', '2/07') # Ejemplo 4 cumplesAmigos.get('Manolito', ' no existe en la lista') # Ejemplo 5 cumplesAmigos.get('Felipe', ' no existe en la lista') # Ejemplo 6
Ahora analicemos los ejemplos numerados del 1 al 6 en la Fig. 1:
- Debido a que la clave ‘Mafalda’ existe en el diccionario, se devuelve el valor asociado.
- La clave no existe, por lo que el resultado es el valor alternativo (también conocido como fallback en la documentación).
- Se crea la clave y el valor correspondiente.
- La llave existe, entonces el valor no es modificado.
- La misma clave solicitada en #2 ahora sí está presente, por lo que se devuelve el valor correspondiente.
- La clave existe y el valor es el original a pesar de haber intentado modificarlo con
setdefault
.
Espero que este post les haya resultado útil. ¡Nos leemos en breve!