Ejercicios con Diccionarios en Python

1. Crear un diccionario con información de un producto


producto = {
    "nombre": "Teclado mecánico",
    "precio": 59.99,
    "stock": 120,
    "categoria": "Periféricos"
}

print(producto)
    

2. Añadir y eliminar claves dinámicamente


producto = {"nombre": "Teclado", "precio": 59.99}

# Añadir clave
producto["color"] = "Negro"

# Eliminar clave
del producto["precio"]

print(producto)
    

3. Crear un diccionario por comprensión con números pares


pares = {n: n**2 for n in range(2, 21, 2)}
print(pares)
    

4. Convertir dos listas en un diccionario


claves = ["nombre", "edad", "ciudad"]
valores = ["Ana", 28, "Madrid"]

persona = dict(zip(claves, valores))
print(persona)
    

5. Recorrer un diccionario anidado e imprimir todas las claves


datos = {
    "usuario": {
        "nombre": "Carlos",
        "edad": 30
    },
    "cuenta": {
        "tipo": "premium",
        "activo": True
    }
}

def imprimir_claves(dic):
    for clave, valor in dic.items():
        print(clave)
        if isinstance(valor, dict):
            imprimir_claves(valor)

imprimir_claves(datos)
    



Diccionarios en Python

¿Qué es un diccionario?

Un diccionario en Python es una estructura de datos que almacena información en pares clave-valor. Permite acceder rápidamente a los datos usando la clave en lugar de un índice numérico.

Características

  • Es mutable (puede modificarse).
  • No permite claves duplicadas.
  • Las claves deben ser inmutables (str, int, float, tuple…).
  • Los valores pueden ser de cualquier tipo.
  • Es una colección no ordenada.

Operaciones básicas

Acceder a un valor:
    diccionario["clave"]

Añadir o modificar:
    diccionario["nueva_clave"] = valor

Eliminar:
    del diccionario["clave"]

Obtener claves, valores o pares:
    diccionario.keys()
    diccionario.values()
    diccionario.items()
        

Ejemplo

persona = {
    "nombre": "Daniel",
    "edad": 30,
    "profesion": "Desarrollador"
}
        

Comprensión de diccionarios

cuadrados = {x: x**2 for x in range(5)}
        

Métodos útiles

get(clave, defecto)
update(otro_diccionario)
pop(clave)
popitem()
setdefault(clave, valor)
        

Diccionarios anidados

usuario = {
    "id": 1,
    "perfil": {
        "nombre": "Daniel",
        "rol": "Admin",
        "preferencias": {
            "tema": "oscuro",
            "idioma": "es"
        }
    }
}
        

Conversiones

dict([("a", 1), ("b", 2)])
dict(zip(["a", "b"], [1, 2]))

import json
dic = json.loads('{"a": 1, "b": 2}')
        

Buenas prácticas

  • Usar claves descriptivas.
  • Evitar claves duplicadas.
  • Preferir .get() cuando no estás seguro de que la clave exista.
  • Usar diccionarios anidados para datos estructurados.
  • Mantener consistencia en el tipo de claves.

Errores comunes

dic["clave"]  # KeyError si no existe
No usar listas como claves
No modificar mientras se itera
        

Ejercicios

  1. Crear un diccionario con información de un producto.
  2. Añadir y eliminar claves dinámicamente.
  3. Crear un diccionario por comprensión con números pares.
  4. Convertir dos listas en un diccionario.
  5. Recorrer un diccionario anidado e imprimir todas las claves.



🧭 Mini‑proyecto en Python: Menús interactivos con Programación Orientada a Objetos

En este artículo te presento un pequeño proyecto en Python que demuestra, de forma sencilla y práctica, cómo aplicar Programación Orientada a Objetos (POO) para crear un menú interactivo en consola.
El objetivo es que el usuario pueda navegar por distintas categorías del blog y abrir artículos directamente en su navegador.
Es un ejemplo ideal para aprender:

  • Cómo organizar código en clases
  • Cómo crear objetos y métodos
  • Cómo encapsular comportamientos
  • Cómo usar diccionarios para mapear opciones
  • Cómo interactuar con el sistema y el navegador
    Vamos paso a paso.

🧱 ¿Por qué este proyecto es POO?
La Programación Orientada a Objetos se basa en cuatro pilares fundamentales:

  1. Clases
  2. Objetos
  3. Métodos
  4. Encapsulación
    Este proyecto utiliza los cuatro de forma clara y didáctica.

🏗️ 1. Clases: la estructura del programa
El proyecto tiene dos clases principales:

Es la clase encargada de mostrar todos los menús y ejecutar las acciones correspondientes.
Dentro de ella viven métodos como:

  • Cada método representa una pantalla o acción del programa.

    Es la clase que contiene el punto de entrada del programa.
    Su método es el encargado de:
  • Crear un objeto
  • Mostrar el menú principal
  • Leer la opción del usuario
  • Llamar al menú correspondiente

🧩 2. Objetos: instancias que ejecutan acciones
En se crea un objeto:

Ese objeto es el que:

  • Muestra los menús
  • Abre enlaces
  • Gestiona la interacción
    En POO, un objeto es una instancia de una clase, y este proyecto lo utiliza exactamente como debe ser.

🛠️ 3. Métodos: comportamientos del objeto
Cada menú es un método dentro de la clase .
Por ejemplo:

  • abre artículos según el lenguaje elegido
  • abre la categoría de cocina
  • abre la sección de historia
    En POO, los métodos representan acciones que un objeto puede realizar.
    Aquí se ve de forma muy clara.

🔒 4. Encapsulación: organización y claridad
Aunque este proyecto no usa atributos privados, sí encapsula comportamientos dentro de clases.
Esto significa:

  • El código está organizado
  • Cada clase tiene una responsabilidad clara
  • No hay funciones sueltas
  • Todo está agrupado de forma lógica
    Es exactamente lo que busca la POO:
    👉 orden, modularidad y claridad.

📁 Estructura del proyecto

🧠 ¿Qué hace cada archivo?
📌
Contiene la clase , que agrupa todos los menús y acciones.
Es el “cerebro visual” del programa.

  • Muestra el menú principal
  • Permite elegir lenguajes de programación
  • Abre categorías del blog
  • Usa diccionarios para mapear opciones
  • Usa para abrir enlaces
  • Usa para no bloquear la ejecución

📌
Contiene la clase y el método .

  • Crea un objeto
  • Muestra el menú principal
  • Lee la opción del usuario
  • Valida la entrada
  • Llama al menú correspondiente
  • Abre el blog al salir
    Además, utiliza para indicar que no necesita una instancia de la clase.

🎯 Conclusión
Este proyecto es un ejemplo perfecto de Programación Orientada a Objetos aplicada a un caso real:

  • Las clases organizan el código
  • Los objetos ejecutan acciones
  • Los métodos representan comportamientos
  • La encapsulación mantiene todo limpio y modular
    Es sencillo, práctico y útil, ideal para quienes están aprendiendo Python y quieren ver cómo se aplica la POO en un proyecto real.

📝 Nota final del artículo

Crea todo el proyecto dentro de la misma carpeta.
Si colocas los archivos en directorios distintos o cambias su ubicación sin ajustar las rutas, el proyecto no funcionará correctamente.




🧾 Cómo crear un Registro de Personal en Python con JSON (guía didáctica y visual)

La estructura está pensada para que el lector aprenda, disfrute y pueda copiar el código sin miedo.
Aquí la tienes 👇

🧾 Cómo crear un Registro de Personal en Python con JSON (guía didáctica y visual)
En este artículo vamos a construir un pequeño sistema para registrar personas, guardar sus datos en un archivo JSON y buscar empleados por cargo.
Todo desde consola, paso a paso, con código limpio y explicaciones claras.
Ideal para quienes están aprendiendo Python y quieren practicar clases, archivos, JSON y bucles.

🎯 Objetivo del proyecto
Vamos a crear un programa que permita:

  • Registrar personas (nombre, edad, sexo, cargo).
  • Guardarlas en un archivo sin borrar lo anterior.
  • Mostrar los datos guardados.
  • Buscar personas por cargo.
  • Mantener un formato bonito y legible.

🧱 1. La clase
Comenzamos creando una clase que represente a cada persona:

Esta clase nos permite trabajar con objetos, pero también convertirlos a diccionarios para guardarlos en JSON.

📦 2. Guardar datos en un archivo JSON
Creamos una función que:

  1. Carga el archivo si existe.
  2. Si no existe, crea una lista vacía.
  3. Agrega la nueva persona.
  4. Guarda todo con formato bonito.

📝 3. Registrar una persona
Pedimos los datos por consola, creamos el objeto y lo guardamos:

🔍 4. Buscar personas por cargo
Ahora viene la parte interactiva: un pequeño menú para buscar empleados por cargo.

📁 5. ¿Cómo queda el archivo ?
Después de registrar varias personas, el archivo se verá así:

Cada nueva persona se agrega al final sin borrar lo anterior.

🎨 6. Explicación visual (tu toque didáctico)
Imagina el archivo JSON como una estantería de fichas:

Cada vez que registras una persona, simplemente añades una ficha más.
Y cuando buscas por cargo, el programa revisa cada ficha como si dijera:

Hasta encontrar coincidencias.

🧠 7. Qué aprende el lector con este proyecto

  • Uso de clases en Python.
  • Conversión de objetos a diccionarios.
  • Lectura y escritura de archivos JSON.
  • Manejo de errores.
  • Búsquedas dentro de listas.
  • Interacción por consola.
  • Persistencia de datos.
    Un proyecto perfecto para principiantes que quieren dar un salto hacia programas más útiles y reales.

1. Importaciones

import json

import os from os

import system

¿Qué hace cada una?

  • json → permite leer y escribir archivos JSON.
  • os → permite comprobar si un archivo existe.
  • system → permite ejecutar comandos del sistema como pause o cls.

🧱 2. Clase Personal

class Personal: def __init__(self, nombre, edad, sexo, cargo): self.nombre = nombre self.edad = edad self.sexo = sexo self.cargo = cargo

¿Qué es esto?

Es un molde para crear personas.
Cada persona tendrá:

  • nombre
  • edad
  • sexo
  • cargo

📌 Método para mostrar información

def mostrar_informacion(self):

print(f»Nombre: {self.nombre}»)

print(f»Edad: {self.edad}»)

print(f»Sexo: {self.sexo}»)

print(f»Cargo: {self.cargo}»)

Muestra los datos en pantalla de forma ordenada.

📌 Método para convertir a diccionario

def convertir_a_diccionario(self):

return { «nombre»: self.nombre, «edad»: self.edad, «sexo»: self.sexo, «cargo»: self.cargo }

Esto es necesario porque JSON no puede guardar objetos, pero sí diccionarios.

📦 3. Función para guardar en JSON

def guardar_en_json(persona_dict):

archivo = «personal.json»

if os.path.exists(archivo):

with open(archivo, «r», encoding=»utf-8″) as f: datos = json.load(f)

else: datos = [] datos.append(persona_dict)

with open(archivo, «w», encoding=»utf-8″) as f: json.dump(datos, f, indent=4, ensure_ascii=False)

¿Qué hace?

  1. Comprueba si el archivo existe

    • Si existe → lo abre y carga su contenido.
    • Si no existe → crea una lista vacía.

  2. Agrega la nueva persona a la lista.
  3. Vuelve a guardar todo en el archivo JSON.

¿Por qué funciona tan bien?

Porque no borra lo anterior, solo añade.

🧑‍💻 4. Programa principal: registrar una persona

print(«—–Registro de Personal—–\n»)

nombre = input(«Ingrese el nombre: «)

edad = input(«Ingrese la edad: «)

sexo = input(«Ingrese el sexo: «)

cargo = input(«Ingrese el cargo: «)

Pide los datos al usuario.

📌 Crear el objeto

persona = Personal(nombre, edad, sexo, cargo)

Aquí se crea una persona real usando la clase.

📌 Mostrar y guardar

persona.mostrar_informacion() guardar_en_json(persona.convertir_a_diccionario())

  • Muestra los datos en pantalla.
  • Convierte la persona a diccionario.
  • La guarda en el archivo JSON.

📁 5. Leer el archivo JSON

with open(«personal.json», «r», encoding=»utf-8″) as archivo: datos = json.load(archivo)

Carga todas las personas registradas en una lista llamada datos.

🔍 6. Búsqueda por cargo

while True: print(«\n Estas en buscar a una persona por cargo \n»)

cargo_buscar = input(«Ingrese el cargo a buscar (o ‘salir’ para terminar): «) 

Bucle infinito hasta que el usuario escriba salir.

📌 Buscar coincidencias

encontrado = False for persona in datos:

if persona[«cargo»].lower() == cargo_buscar.lower():

print(«Persona encontrada:»)

print(json.dumps(persona, indent=4, ensure_ascii=False)) encontrado = True break

¿Qué hace?

  • Recorre todas las personas del JSON.
  • Compara el cargo ignorando mayúsculas/minúsculas.
  • Si encuentra una coincidencia:

  • La imprime en formato bonito.
  • Marca encontrado = True.
  • Sale del bucle.

📌 Si no encuentra nada

if not encontrado: print(«Cargo no encontrada.»)

📌 Pausa y limpiar pantalla

system(«pause»)

system(«cls»)

  • pause → espera que el usuario presione una tecla.
  • cls → limpia la pantalla (solo Windows).

🎯 Resumen visual del flujo

[Usuario escribe datos]

↓ [Se crea un objeto Personal]

↓ [Se convierte a diccionario]

↓ [Se guarda en personal.json]

↓ [Se cargan todos los registros]

↓ [Usuario busca por cargo]

↓ [Se muestran coincidencias]




DICIONARIOS EN PHYTHON

Los diccionarios son estructuras de datos que permiten almacenar valores de distintos tipos, como cadenas de texto (strings), números enteros, decimales y listas, o incluso otros diccionarios, y se inician con llaves {}. Están ordenados, lo que facilita la búsqueda de elementos mediante una clave asociada a un valor, por ejemplo, la clave «edad»: 30 vincula ‘edad’ con el número 30. Además, los diccionarios son mutables, es decir, sus contenidos pueden modificarse.

Se almacenan utilizando pares de valores relacionados, donde uno es la clave (Key).

Diccionario de Python

>>>print(» Introduce tu Nombre y apellido»)
>>>nombre=input(«\n Nombre «)# Introduce por teclado el valor de variable «nombre»
>>>apellidos=input(«\n Apellido «)# Introduce por teclado el valor de variable «apellido»

>>>el_diccionario={«Nombre»:nombre,»1º Apellido»:apellidos}# diccionario

>>>print(«\n Tu Nombre «,el_diccionario[«Nombre»])# Diccionario key

>>>print(«\n Tu Apellido «,el_diccionario[«1º Apellido»])# Diccionario key

>>input(«\n Presiona Enter para continuar «)# Pausa hasta presionar enter




La función enumerate en Python

Con `enumerate()`, lo que hacemos es numerar un objeto, por ejemplo, en una lista nos da el índice y a qué pertenece.

Ejemplo de codigo:

Esto no esta dando algo llamado tuplas que te esplico en este articulo que son: