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.
buena entrada. El método get nunca lo había usado y me ha resuelto un problema de forma elegante. Gracias.
Python esta repleto de soluciones elegantes para resolver problemas de programación comunes. 🙂
Gracias!
Genio!!!
Hola quería saber. Si tengo la frase
‘Hola gente del mundo’
dict = {‘1′:’hola’, ‘2’:’mundo’, ‘3’:’gente’}
Quiero que si una de las palabras en mi diccionario se encuentra dentro de mi frase ‘Hola gente del mundo’, devuelva el valor de todos los valores encontrados, es decir, 3 (en este caso).
Si el diccionario solo tuviera el ‘hola’ y ‘gente’ devolviese 2, o así sucesivamente.
¿Es posible?
Es un sencillo problema de acumulación. Convierte primero la frase en una lista de palabras:
Recorremos ahora la lista y si la palabra está en el diccionario incrementamos el acumulador:
Saludos
Saludos, muy buen blog…
Una pregunta tengo por ejemplo un diccionario:
ing_esp = {1:{«red»:»rojo»}, 2:{«yellow»:»amarillo»}}
y con num_random = randint(1,2) consigo una de las claves del diccionario al azar, por ejemplo el 2
Quero poder acceder con ese numero a la clave del diccionario y crear dos variables como las siguientes:
ingles = «yellow»
español = «amarillo»
Muchas gracias, estoy seguro que el mundo es mejor gracias a gente, que saber sumar, como tu.