Programación Orientada a Objetos en Python: Clases y Objetos

🐍 Python — POO Programación Orientada a Objetos en Python: Clases, Objetos y Herencia Aprende Programación Orientada a Objetos (POO) en Python desde cero. Clases, objetos, atributos, métodos, herencia y polimorfismo con ejercicios resueltos paso a paso. ⏱ 18 min de lectura 🎯 Intermedio 💻 Código ejecutable ✅ Ejercicios resueltos 📚 Contenido de esta guía ¿Qué es la POO? Crear una clase: class e __init__ Atributos y métodos ¿Qué es self? Herencia Polimorfismo Ejercicio práctico: Sistema de biblioteca 1 ¿Qué es la Programación Orientada a Objetos? La Programación Orientada a Objetos (POO) es un paradigma que organiza el código en torno a objetos : entidades que combinan datos (atributos) y comportamientos (métodos). Es la base de frameworks como Django y librerías como Pandas . 💡 Analogía del mundo real Piensa en un automóvil : tiene atributos (color, marca, velocidad) y co...

Diccionarios en Python: Guía Completa con Ejemplos

🐍 Python — Estructuras de Datos

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.

⏱ 13 min de lectura 🎯 Todos los niveles 💻 Código ejecutable ✅ Ejercicios resueltos

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.

💡 ¿Cuándo usar un diccionario?
Usa un diccionario cuando necesites asociar datos relacionados: información de una persona, configuraciones de un programa, conteo de palabras, resultados de un formulario, etc.
🆚 Lista vs Diccionario
Lista: ["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_diccionario.py
# 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
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
▶ Salida
Carlos
21
Ingeniería de Sistemas
4.2
N/A
True
False
⚠️ Diferencia entre [] y get()
Si accedes con 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 de que la clave exista.

3Agregar, modificar y eliminar

modificar_dict.py
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)
▶ Salida
{'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 clavesd.keys()
values()Todos los valoresd.values()
items()Pares (clave, valor)d.items()
get(k, def)Valor de k o defaultd.get("x", 0)
pop(k)Elimina y retorna valord.pop("edad")
update(d2)Fusiona con otro dictd.update({"x":1})
clear()Vacía el diccionariod.clear()
copy()Copia superficiald2 = d.copy()

5Recorrer diccionarios

recorrer_dict.py
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
print("--- Ficha del producto ---")
for clave, valor in producto.items():
    print(f"  {clave:10}: {valor}")
▶ Salida
--- 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.

dict_anidado.py
# 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}")
▶ Salida
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

📋 Ejercicio 1: Contador de palabras

Crea un programa que cuente cuántas veces aparece cada palabra en un texto ingresado por el usuario.

contador_palabras.py
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)
▶ Ejemplo de salida
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)
📋 Ejercicio 2: Agenda de contactos

Implementa una agenda de contactos usando diccionarios: agregar, buscar, eliminar y listar contactos.

agenda_contactos.py
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.

Python Diccionarios Estructuras de datos Ejercicios resueltos
📖 Continúa aprendiendo
  • Funciones en Python: def, return y parámetros
  • Programación Orientada a Objetos en Python
  • Listas en Python — Guía Completa

Comentarios

Entradas populares de este blog

Ejercicios de Python para Principiantes: Guía Paso a Paso con Ejemplos

Programación Orientada a Objetos en Python: Clases y Objetos