Objetivo: aprender diversas técnicas para consultar los valores de un diccionario en Python.
En esta tercera entrega dedicada a los diccionarios mostraremos cómo consultar los valores que contienen. Ya sabemos agregar o eliminar elementos (pares clave-valor), pero, ¿cómo realizamos consultas específicas?
El diccionario con el que trabajaremos hoy contiene información sobre unos personajes muy peculiares…
>>> gente = {'Pipi':'Calzaslargas', 'Bob':'Esponja',
'Laura':'Ingalls', 'Sherlock':'Holmes'}
Comencemos determinando si nuestro diccionario contiene una clave concreta:
>>> 'Sherlock' in gente
True
>>> 'Dan' in gente
False
Hemos utilizado el operador in, un viejo conocido ya, para determinar la pertenencia. Podemos chequear, a su vez, la no pertenencia:
>>> 'Dan' not in gente
True
Es importante comprender que este uso sólo comprueba claves, pero no los valores correspondientes, como puedes apreciar en la siguiente instrucción:
>>> 'Esponja' in gente
False
En un próximo artículo aprenderemos métodos que nos permitirán obtener secuencias con las claves, los valores o con ambos, pero primero has de asegurarte de interiorizar bien esto.
Ya sabemos si una clave existe en un diccionario. Nuestra siguiente pregunta es: ¿cómo conocemos el valor que tiene asociado?
La forma más simple de extraer el valor de una determinada clave es utilizar la sintaxis siguiente:
diccionario[clave]
Consultemos qué valor tiene asignado la clave ‘Laura’:
>>> gente['Laura']
'Ingalls'
Si tratamos de consultar el valor de una clave inexistente tendríamos un serio problema:
>>> gente['Pedro']
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
gente['Pedro']
KeyError: 'Pedro'
Se produce un error y el programa se aborta. Más adelante, cuanto tratemos las excepciones, veremos el modo general que provee Python para controlar este tipo de errores, pero ahora veremos técnicas asociadas a los diccionarios para resolver este problema concreto.
Una forma obvia de gestionar este fallo sería realizar una comprobación de pertenencia antes de tratar de consultar el valor:
>>> if 'Pedro' in gente:
print(gente['Pedro'])
else:
print('Esta clave no existe')
Esta clave no existe
Pero disponemos de una manera más elegante. Deja que te presente el método get().
>>> gente.get('Laura')
'Ingalls'
Como ves, es lo mismo que haber hecho:
>>> gente['Laura']
'Ingalls'
Pero tiene una importante diferencia. Prueba ahora esto:
>>> gente.get('Pedro')
No devuelve nada, puesto que la clave no existe, pero, al menos, no provoca un error.
Y aún hay más: podemos indicar qué valor queremos que se devuelva para el caso en que la clave no exista:
diccionario.get(clave, valor_por_defecto)
>>> gente.get('Bugs', 'Esta clave no existe')
'Esta clave no existe'
Y, como decía un viejo amigo: That’s all folks!
Javier Montero Gabarró
El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)
El Club del Autodidacta
Consulta el índice completo de artículos relacionados con Python.