Diccionarios en Python: Guía Completa con Ejercicios Resueltos
Aprende a crear, acceder, modificar y recorrer diccionarios en Python. Ejemplos paso a paso con código ejecutable y ejercicios resueltos en español.
1¿Qué es un diccionario en Python?
Un diccionario es una colección de pares clave: valor. Se define con llaves { } y permite acceder a cualquier dato directamente por su clave, sin necesidad de recorrer toda la estructura.
["Ana", 20, "Bogotá"] → accedes por posición (0, 1, 2)Diccionario:
{"nombre": "Ana", "edad": 20} → accedes por nombre (clave)2Crear y acceder a diccionarios
# Crear un diccionario estudiante = { "nombre" : "Carlos", "edad" : 21, "carrera" : "Ingeniería de Sistemas", "promedio": 4.2, "activo" : True } # Acceder a valores por clave print(estudiante["nombre"]) # Carlos print(estudiante["edad"]) # 21 print(estudiante["carrera"]) # Ingeniería de Sistemas # get() → acceso seguro (no genera error si no existe) print(estudiante.get("promedio")) # 4.2 print(estudiante.get("telefono", "N/A")) # N/A # Verificar si una clave existe print("nombre" in estudiante) # True print("codigo" in estudiante) # False
Carlos 21 Ingeniería de Sistemas 4.2 N/A True False
dict["clave"] y la clave no existe, Python lanza un KeyError. Con dict.get("clave") retorna None (o el valor por defecto que definas). Usa get() cuando no estés seguro si la clave existe.3Agregar, modificar y eliminar
persona = {"nombre": "Laura", "edad": 25} # Agregar nueva clave persona["ciudad"] = "Medellín" persona["profesion"] = "Diseñadora" print(persona) # Modificar valor existente persona["edad"] = 26 persona["ciudad"] = "Bogotá" print(persona) # Eliminar una clave del persona["profesion"] print(persona) # pop() elimina y retorna el valor ciudad = persona.pop("ciudad") print(f"Ciudad eliminada: {ciudad}") print(persona)
{'nombre': 'Laura', 'edad': 25, 'ciudad': 'Medellín', 'profesion': 'Diseñadora'}
{'nombre': 'Laura', 'edad': 26, 'ciudad': 'Bogotá', 'profesion': 'Diseñadora'}
{'nombre': 'Laura', 'edad': 26, 'ciudad': 'Bogotá'}
Ciudad eliminada: Bogotá
{'nombre': 'Laura', 'edad': 26}
4Métodos esenciales de diccionarios
| Método | ¿Qué retorna? | Ejemplo |
|---|---|---|
keys() | Todas las claves | d.keys() |
values() | Todos los valores | d.values() |
items() | Pares (clave, valor) | d.items() |
get(k, def) | Valor de k o default | d.get("x", 0) |
pop(k) | Elimina y retorna valor | d.pop("edad") |
update(d2) | Fusiona con otro dict | d.update({"x":1}) |
clear() | Vacía el diccionario | d.clear() |
copy() | Copia superficial | d2 = d.copy() |
5Recorrer diccionarios
producto = { "nombre" : "Laptop", "precio" : 2500000, "marca" : "Lenovo", "stock" : 15 } # Solo claves print("--- Claves ---") for clave in producto.keys(): print(f" {clave}") # Solo valores print("--- Valores ---") for valor in producto.values(): print(f" {valor}") # Clave y valor juntos (la forma más útil) print("--- Ficha del producto ---") for clave, valor in producto.items(): print(f" {clave:10}: {valor}")
--- Claves --- nombre precio marca stock --- Valores --- Laptop 2500000 Lenovo 15 --- Ficha del producto --- nombre : Laptop precio : 2500000 marca : Lenovo stock : 15
6Diccionarios anidados
Un diccionario puede contener otros diccionarios como valores. Esto permite representar estructuras de datos complejas como bases de datos o registros de estudiantes.
# Registro de estudiantes estudiantes = { "E001": {"nombre": "Ana", "nota": 4.5, "ciudad": "Cali"}, "E002": {"nombre": "Luis", "nota": 3.8, "ciudad": "Bogotá"}, "E003": {"nombre": "María", "nota": 2.9, "ciudad": "Medellín"}, } # Acceder a datos anidados print(estudiantes["E001"]["nombre"]) # Ana print(estudiantes["E002"]["nota"]) # 3.8 # Recorrer todos los estudiantes print("\n=== REPORTE DE ESTUDIANTES ===") for codigo, datos in estudiantes.items(): estado = "✅ Aprobado" if datos["nota"] >= 3.0 else "❌ Reprobado" print(f"{codigo} | {datos['nombre']:6} | {datos['nota']} | {estado}")
Ana 3.8 === REPORTE DE ESTUDIANTES === E001 | Ana | 4.5 | ✅ Aprobado E002 | Luis | 3.8 | ✅ Aprobado E003 | María | 2.9 | ❌ Reprobado
7🏋️ Ejercicios Prácticos Resueltos
Crea un programa que cuente cuántas veces aparece cada palabra en un texto ingresado por el usuario.
def contar_palabras(texto): palabras = texto.lower().split() contador = {} for palabra in palabras: contador[palabra] = contador.get(palabra, 0) + 1 # Ordenar por frecuencia ordenado = sorted(contador.items(), key=lambda x: x[1], reverse=True) print("\n=== CONTEO DE PALABRAS ===") for palabra, veces in ordenado: barra = "|" * veces print(f" {palabra:15} {barra} ({veces})") texto = input("Ingresa un texto: ") contar_palabras(texto)
Ingresa un texto: python es genial python es el mejor lenguaje python === CONTEO DE PALABRAS === python ||| (3) es || (2) genial | (1) el | (1) mejor | (1) lenguaje | (1)
Implementa una agenda de contactos usando diccionarios: agregar, buscar, eliminar y listar contactos.
agenda = {} def agregar_contacto(nombre, telefono, email=""): agenda[nombre] = {"telefono": telefono, "email": email} print(f"✅ {nombre} agregado a la agenda") def buscar_contacto(nombre): contacto = agenda.get(nombre) if contacto: print(f"\n📞 {nombre}") print(f" Tel: {contacto['telefono']}") print(f" Email: {contacto['email'] or 'N/A'}") else: print(f"❌ '{nombre}' no está en la agenda") def listar_contactos(): if not agenda: print("La agenda está vacía") return print("\n=== AGENDA ===") for nombre, datos in sorted(agenda.items()): print(f" {nombre:12} → {datos['telefono']}") # Prueba agregar_contacto("Ana García", "300-111-2222", "ana@email.com") agregar_contacto("Luis Pérez", "311-333-4444") agregar_contacto("María López", "322-555-6666", "maria@email.com") listar_contactos() buscar_contacto("Ana García")
¿Dominaste los diccionarios? 📖
Déjanos un comentario con tus preguntas. ¡Comparte con tus compañeros y suscríbete para más contenido!
- Funciones en Python: def, return y parámetros
- Programación Orientada a Objetos en Python
- Listas en Python — Guía Completa
Comentarios
Publicar un comentario