Diccionarios
🧠 ¿Qué es un diccionario en Python?
Un diccionario es una estructura de datos que almacena pares clave-valor. Cada clave debe ser única e inmutable (como cadenas, números o tuplas inmutables), y se usa para acceder al valor asociado.
persona = {
"nombre": "Ana",
"edad": 30,
"profesion": "Ingeniera"
}
🔍 Características clave
- No permite claves duplicadas.
- El orden de los elementos se conserva (desde Python 3.7).
- Es mutable: puedes añadir, modificar y eliminar elementos.
- Claves deben ser inmutables.
📚 Métodos y funciones útiles
Método / Función | Descripción | Ejemplo |
---|---|---|
dict() |
Crear un diccionario vacío o desde listas/tuplas | dict([('a', 1), ('b', 2)]) |
.get(clave, valor_default) |
Obtener valor sin error si la clave no existe | persona.get('email', 'No disponible') |
.keys() |
Retorna todas las claves | persona.keys() |
.values() |
Retorna todos los valores | persona.values() |
.items() |
Retorna tuplas (clave, valor) | persona.items() |
.update(dic) |
Actualiza con otro diccionario | persona.update({'edad': 31}) |
.pop(clave) |
Elimina una clave y devuelve su valor | persona.pop('edad') |
.clear() |
Vacía el diccionario | persona.clear() |
.setdefault(clave, valor) |
Devuelve el valor, lo crea si no existe | persona.setdefault('email', 'no@correo.com') |
🛠️ Ejemplos de uso
# Crear
d = {"a": 1, "b": 2}
# Añadir o modificar
d["c"] = 3
# Acceso seguro
print(d.get("x", "No existe"))
# Iteración
for clave, valor in d.items():
print(f"{clave}: {valor}")
🆚 Diccionarios vs Listas
Característica | Diccionario | Lista |
---|---|---|
Acceso | Por clave (d['x'] ) |
Por índice (l[0] ) |
Orden | Conservado desde Python 3.7 | Ordenado por naturaleza |
Claves/índices | Personalizadas | Índices numéricos |
Útil para | Datos estructurados con etiquetas | Colecciones secuenciales |
🔎 Particularidades
- Las claves deben ser hashables (inmutables).
- Puedes anidar diccionarios:
agenda = {
"Juan": {"tel": "123", "email": "juan@example.com"},
"Ana": {"tel": "456", "email": "ana@example.com"}
}
- Las comprensiones también funcionan:
cuadrados = {x: x**2 for x in range(5)}
🧾 Ejemplo: Gestión de inventario en una librería
# 1. Crear un diccionario con libros y su cantidad en inventario
inventario = {
"Cien años de soledad": 4,
"El Principito": 10,
"1984": 6
}
# 2. Añadir un nuevo libro
inventario["Don Quijote"] = 3
# 3. Modificar la cantidad de un libro existente
inventario["1984"] = 8
# 4. Eliminar un libro del inventario
del inventario["El Principito"]
# 5. Recorrer el diccionario e imprimir el inventario
print("Inventario actual:")
for titulo, cantidad in inventario.items():
print(f"{titulo}: {cantidad} ejemplares")
# 6. Obtener solo los títulos disponibles
titulos = [titulo for titulo in inventario]
print("\nTítulos disponibles:", titulos)
# 7. Crear una lista de libros con más de 5 ejemplares
populares = [titulo for titulo, cantidad in inventario.items() if cantidad > 5]
print("\nLibros populares (más de 5 ejemplares):", populares)
# 8. Crear un nuevo diccionario con solo los libros escasos (3 o menos)
escasos = {titulo: cantidad for titulo, cantidad in inventario.items() if cantidad <= 3}
print("\nLibros escasos:", escasos)
📌 Salida esperada:
Inventario actual:
Cien años de soledad: 4 ejemplares
1984: 8 ejemplares
Don Quijote: 3 ejemplares
Títulos disponibles: ['Cien años de soledad', '1984', 'Don Quijote']
Libros populares (más de 5 ejemplares): ['1984']
Libros escasos: {'Don Quijote': 3}
🧪 Ejercicios propuestos
- Crea un diccionario con los días de la semana como claves y sus nombres en inglés como valores.
- Haz un programa que cuente cuántas veces aparece cada letra en una cadena.
- Combina dos listas (una de claves y otra de valores) en un solo diccionario.
- Itera sobre un diccionario e imprime sólo los valores mayores a 10.
- Escribe una función que reciba un diccionario y devuelva el valor más grande.