Los diccionarios son como diccionarios reales: buscas una palabra (clave) y encuentras su definición (valor). En programación, son perfectos para almacenar datos relacionados. Un diccionario de una persona podría tener: nombre, edad, ciudad, email.
Los diccionarios se crean con llaves {} y contienen pares clave: valor.
# Diccionario vacío
diccionario_vacio = {}
# Diccionario con datos
persona = {
"nombre": "Juan",
"edad": 25,
"ciudad": "Madrid",
"email": "juan@ejemplo.com"
}
# Diccionario con diferentes tipos de valores
datos = {
"nombre": "Ana",
"edad": 28,
"altura": 1.75,
"es_estudiante": True,
"hobbies": ["leer", "programar"]
}
print(type(persona)) # <class 'dict'>
Usa la clave para acceder al valor, no el índice.
persona = {
"nombre": "Juan",
"edad": 25,
"ciudad": "Madrid"
}
# Acceso con corchetes
print(persona["nombre"]) # Juan
print(persona["edad"]) # 25
# Acceso con get() (más seguro)
print(persona.get("nombre")) # Juan
print(persona.get("telefono")) # None (no da error)
# get() con valor por defecto
print(persona.get("telefono", "No disponible")) # No disponible
¡Diferencia importante!
diccionario["clave"]: Da error si la clave no existe.diccionario.get("clave"): Devuelve None si no existe (más seguro).Los diccionarios son mutables. Puedes cambiarlos.
persona = {
"nombre": "Juan",
"edad": 25
}
# Modificar un valor existente
persona["edad"] = 26
print(persona) # {'nombre': 'Juan', 'edad': 26}
# Agregar una nueva clave-valor
persona["ciudad"] = "Madrid"
persona["email"] = "juan@ejemplo.com"
print(persona)
# {'nombre': 'Juan', 'edad': 26, 'ciudad': 'Madrid', 'email': 'juan@ejemplo.com'}
# Eliminar una clave
del persona["email"]
print(persona) # {'nombre': 'Juan', 'edad': 26, 'ciudad': 'Madrid'}
Operaciones comunes con diccionarios.
Obtiene todas las claves.
persona = {"nombre": "Juan", "edad": 25}
print(persona.keys())
# dict_keys(['nombre', 'edad'])
Obtiene todos los valores.
persona = {"nombre": "Juan", "edad": 25}
print(persona.values())
# dict_values(['Juan', 25])
Obtiene pares clave-valor.
persona = {"nombre": "Juan", "edad": 25}
print(persona.items())
# dict_items([('nombre', 'Juan'), ('edad', 25)])
Elimina una clave y devuelve su valor.
persona = {"nombre": "Juan", "edad": 25}
edad = persona.pop("edad")
print(edad) # 25
print(persona) # {'nombre': 'Juan'}
Combina dos diccionarios.
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
dict1.update(dict2)
print(dict1)
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
Vacía el diccionario.
persona = {"nombre": "Juan"}
persona.clear()
print(persona) # {}
Usa in para verificar.
persona = {
"nombre": "Juan",
"edad": 25,
"ciudad": "Madrid"
}
# Verificar si una clave existe
if "nombre" in persona:
print("El nombre existe")
if "email" not in persona:
print("El email no existe")
Diferentes formas de iterar sobre un diccionario.
persona = {
"nombre": "Juan",
"edad": 25,
"ciudad": "Madrid"
}
# Forma 1: Solo claves
for clave in persona:
print(clave)
# Forma 2: Solo valores
for valor in persona.values():
print(valor)
# Forma 3: Clave y valor (RECOMENDADO)
for clave, valor in persona.items():
print(f"{clave}: {valor}")
Diccionarios dentro de diccionarios. Perfecto para datos complejos.
# Diccionario de estudiantes
estudiantes = {
"est1": {
"nombre": "Juan",
"edad": 20,
"calificaciones": [8, 9, 7]
},
"est2": {
"nombre": "Ana",
"edad": 22,
"calificaciones": [9, 9, 8]
}
}
# Acceder a datos anidados
print(estudiantes["est1"] ["nombre"]) # Juan
print(estudiantes["est1"] ["calificaciones"] [0]) # 8
# Recorrer diccionarios anidados
for id_est, datos in estudiantes.items():
print(f"{datos['nombre']}: {datos['edad']} años")
Obtener información sobre el diccionario.
persona = {
"nombre": "Juan",
"edad": 25,
"ciudad": "Madrid",
"email": "juan@ejemplo.com"
}
# Cantidad de elementos
print(len(persona)) # 4
# Verificar si una clave existe
print("nombre" in persona) # True
print("telefono" in persona) # False
# Verificar si un valor existe
print("Juan" in persona.values()) # True
Crea una agenda simple con diccionarios.
# Agenda de contactos
agenda = {
"Juan": "555-1234",
"Ana": "555-5678",
"Pedro": "555-9012"
}
# Agregar contacto
nombre = input("¿Qué nombre deseas agregar? ")
telefono = input("¿Cuál es su teléfono? ")
agenda[nombre] = telefono
# Buscar contacto
buscar = input("¿A quién buscas? ")
if buscar in agenda:
print(f"El teléfono de {buscar} es {agenda[buscar]}")
else:
print(f{buscar} no está en la agenda")
# Mostrar todos los contactos
print("\n--- AGENDA COMPLETA ---")
for nombre, telefono in agenda.items():
print(f"{nombre}: {telefono}")
Gestiona productos con precios.
# Catálogo de productos
productos = {
"laptop": 999.99,
"mouse": 29.99,
"teclado": 79.99,
"monitor": 299.99
}
# Carrito de compras
carrito = {}
# Agregar productos al carrito
while True:
producto = input("¿Qué producto deseas? (o 'salir'): ")
if producto == "salir":
break
if producto in productos:
cantidad = int(input("¿Cuántos? "))
carrito[producto] = cantidad
print(f"✓ {producto} agregado al carrito")
else:
print("Producto no disponible")
# Calcular total
total = 0
print("\n--- CARRITO ---")
for producto, cantidad in carrito.items():
precio_unitario = productos[producto]
subtotal = precio_unitario * cantidad
total += subtotal
print(f"{producto}: {cantidad} x ${precio_unitario} = ${subtotal}")
print(f"\nTOTAL: ${total}")
Usa Online Python para hacer estos ejercicios: