MÓDULO 1: INICIO

Diccionarios

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.


1. Crear Diccionarios

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'>

2. Acceder a Valores

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).

3. Modificar y Agregar Elementos

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'}

4. Métodos Útiles de Diccionarios

Operaciones comunes con diccionarios.

keys()

Obtiene todas las claves.

persona = {"nombre": "Juan", "edad": 25}
print(persona.keys())
# dict_keys(['nombre', 'edad'])

values()

Obtiene todos los valores.

persona = {"nombre": "Juan", "edad": 25}
print(persona.values())
# dict_values(['Juan', 25])

items()

Obtiene pares clave-valor.

persona = {"nombre": "Juan", "edad": 25}
print(persona.items())
# dict_items([('nombre', 'Juan'), ('edad', 25)])

pop()

Elimina una clave y devuelve su valor.

persona = {"nombre": "Juan", "edad": 25}
edad = persona.pop("edad")
print(edad) # 25
print(persona) # {'nombre': 'Juan'}

update()

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}

clear()

Vacía el diccionario.

persona = {"nombre": "Juan"}
persona.clear()
print(persona) # {}

5. Verificar si una Clave Existe

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")

6. Recorrer Diccionarios

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}")

7. Diccionarios Anidados

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")

8. Longitud y Búsqueda

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

9. Caso Práctico: Agenda de Contactos

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}")

10. Caso Práctico: Tienda Online

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}")

🛠️ Tu Misión

Usa Online Python para hacer estos ejercicios:

  1. Crea un diccionario con tus datos personales (nombre, edad, ciudad, email).
  2. Accede a cada valor usando corchetes y usando get().
  3. Modifica tu edad en el diccionario.
  4. Agrega una nueva clave "teléfono" al diccionario.
  5. Elimina una clave del diccionario.
  6. Obtén todas las claves, todos los valores, y todos los pares clave-valor.
  7. Recorre el diccionario mostrando cada clave y su valor.
  8. Verifica si una clave existe en el diccionario.
  9. Crea un diccionario de 3 productos con sus precios y calcula el total.
  10. Bonus: Crea un diccionario de estudiantes con sus calificaciones, calcula el promedio de cada uno, y muestra quién tiene el promedio más alto.