Diccionarios en Python: guía completa con ejemplos reales
Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción
Abre la aplicación de contactos de tu teléfono. Buscas a una persona por su nombre y obtienes su número de teléfono. No buscas por posición: no dices "dame el contacto número 47". Buscas por nombre.
Un diccionario de Python funciona exactamente así. En lugar de guardar los elementos por posición (como una lista), un diccionario los guarda como pares clave-valor. La clave es el nombre que buscas, y el valor es lo que obtienes.
Los diccionarios están por todas partes en la programación real. Perfiles de usuario, ajustes de configuración, datos JSON que llegan de una API, contadores de palabras: todos usan diccionarios. En esta lección dominarás todas las operaciones esenciales con diccionarios.
Cómo crear un diccionario en Python
Un diccionario se crea con llaves {} y pares clave-valor, con dos puntos entre la clave y el valor. Los pares se separan con comas.
{'name': 'Alice', 'phone': '555-1234', 'email': 'alice@example.com'}Las claves suelen ser cadenas de texto, pero pueden ser de cualquier tipo inmutable: números, tuplas o booleanos. Los valores pueden ser cualquier cosa: cadenas, números, listas e incluso otros diccionarios.
{'name': 'Bob', 'age': 16, 'grades': [85, 92, 78], 'active': True}
{}
{}Acceder a los valores de un diccionario y modificarlos
Para obtener un valor de un diccionario, pon la clave entre corchetes. Para cambiar un valor, asígnale uno nuevo a esa clave. Para añadir un par nuevo, asigna un valor a una clave que todavía no exista.
Alice
25
26
{'name': 'Alice', 'age': 26, 'city': 'Boston', 'job': 'Engineer'}Not specified Alice
data = {'x': 10}
# Crashes with KeyError:
value = data['y']data = {'x': 10}
# Returns 0 if 'y' is missing:
value = data.get('y', 0)Métodos esenciales de los diccionarios
Los diccionarios traen varios métodos integrados que facilitan el trabajo con ellos. Estos son los que más usarás.
['apple', 'banana', 'cherry']
[1.5, 0.75, 3.0]
[('apple', 1.5), ('banana', 0.75), ('cherry', 3.0)]3
{'apples': 5, 'oranges': 8}
{'apples': 10, 'oranges': 8, 'grapes': 12}Fíjate en que update() añade claves nuevas y también sobrescribe las existentes. En el ejemplo anterior, 'apples' pasó de 5 a 10, y 'grapes' se añadió como clave nueva.
Recorrer diccionarios
Puedes recorrer las claves de un diccionario, sus valores o ambos. Lo más habitual es recorrer items(), porque así obtienes la clave y el valor a la vez.
Alice Bob Charlie --- 95 87 72 --- Alice: 95 Bob: 87 Charlie: 72
Comprobar si existe una clave
Antes de acceder a una clave, a menudo conviene comprobar primero si existe. La palabra clave in busca entre las claves, no entre los valores.
True False True Email: alice@example.com
Diccionarios anidados
El valor de un diccionario puede ser otro diccionario. Esto se llama anidamiento y te permite representar datos complejos y estructurados, como los estudiantes de un aula, cada uno con sus propios atributos.
A 15 Alice is 16 and got a A Bob is 15 and got a B Charlie is 16 and got a A
Para acceder a un valor anidado, encadenas corchetes: primero la clave exterior y luego la interior. Puedes anidar tantos niveles como quieras, pero a partir de dos o tres niveles el código cuesta leerlo.
Errores comunes con los diccionarios
New York
data = {'a': 1, 'b': 2, 'c': 3}
for key in data:
if data[key] < 2:
del data[key] # RuntimeError!data = {'a': 1, 'b': 2, 'c': 3}
for key in list(data.keys()):
if data[key] < 2:
del data[key] # Safe!
print(data) # {'b': 2, 'c': 3}Ejercicios de práctica
¡Hora de practicar! Estos ejercicios avanzan desde las operaciones básicas con diccionarios hasta patrones más complejos.
Crea un diccionario llamado pet con estos pares clave-valor:
'name': 'Buddy''species': 'dog''age': 5Luego imprime el nombre de la mascota.
Salida esperada:
BuddyTienes un diccionario que representa un libro. Sigue estos pasos en orden:
1. Cambia 'year' a 2024
2. Añade una clave nueva 'genre' con el valor 'fiction'
3. Imprime el diccionario completo
Salida esperada:
{'title': 'The Great Adventure', 'author': 'Jane Smith', 'year': 2024, 'genre': 'fiction'}Tienes un diccionario con el perfil de un usuario. Usa el método .get() para imprimir sin riesgo su número de teléfono. Si la clave 'phone' no existe, imprime 'No phone number'.
Salida esperada:
No phone numberRecorre el diccionario e imprime cada fruta y su precio con este formato:
apple: $1.50
banana: $0.75
cherry: $3.00Asegúrate de que los precios muestren exactamente dos decimales.
Lee este código con atención y predice qué imprimirá. ¿Qué pasa cuando un diccionario tiene claves duplicadas?
Escribe la salida exacta.
Este código intenta comprobar si la nota 'A' existe en el diccionario, pero está comprobando lo que no debe. Corrígelo para que imprima:
Someone got an A!Cuenta cuántas veces aparece cada palabra en la lista dada. Guarda los conteos en un diccionario llamado word_counts y luego imprímelo.
Salida esperada:
{'hello': 3, 'world': 2, 'python': 1}Tienes un diccionario anidado de estudiantes. Recórrelo e imprime el nombre de cada estudiante y su nota de matemáticas con este formato:
Alice: 95
Bob: 82
Charlie: 91Resumen: lo que aprendiste sobre los diccionarios en Python
¡Buen trabajo! Este es un repaso de todo lo que ya sabes:
| Concepto | Qué hace | Ejemplo |
|---|---|---|
| Crear un diccionario | Guarda pares clave-valor | d = {'name': 'Alice'} |
| Acceder por clave | Obtiene un valor | d['name'] |
| Acceso seguro | Da un valor predeterminado si falta | d.get('x', 0) |
| Añadir / modificar | Asigna un valor | d['age'] = 25 |
keys() | Todas las claves | d.keys() |
values() | Todos los valores | d.values() |
items() | Tuplas clave-valor | d.items() |
pop(key) | Elimina y devuelve | d.pop('age') |
update() | Combina diccionarios | d.update(other) |
in | Comprueba si existe una clave | 'name' in d |
| Anidamiento | Diccionarios dentro de diccionarios | d['a']['b'] |
Los diccionarios son una de las estructuras de datos más importantes de Python. Datos JSON, respuestas de una API, archivos de configuración, contadores: todo gira en torno a pares clave-valor.
¿Qué sigue?
En la siguiente lección, [comprensiones en Python](/python/python-comprehensions), aprenderás a crear listas, diccionarios y conjuntos en una sola línea de código elegante.
Las comprensiones te permiten cambiar bucles de varias líneas por una sola línea concisa. Son una de las características que hacen de Python un lenguaje tan limpio y expresivo.