Python Reto #12 — Convertir una lista en un diccionario (índice → valor)

Nivel: Principiante
Tema: Listas, diccionarios, índices, bucles, enumerate, validación de entradas, tests con pytest
Objetivo: Convertir una lista en un diccionario donde cada clave sea el índice y cada valor sea el elemento correspondiente.

Enunciado

Crea una función llamada lista_a_diccionario(lista) que:

  1. Reciba un valor lista.
  2. Si lista es None, devuelva un diccionario vacío {}.
  3. Si lista no es una lista (list), lance TypeError.
  4. Devuelva un diccionario donde:
    • las claves sean los índices (empezando en 0),
    • los valores sean los elementos de la lista.
  5. Mantenga el orden natural de los índices.

Ejemplos

  • lista_a_diccionario(["a", "b", "c"]){0: "a", 1: "b", 2: "c"}
  • lista_a_diccionario([]){}
  • lista_a_diccionario(None){}
  • lista_a_diccionario("abc")TypeError

Pistas

  1. enumerate(lista) devuelve pares (índice, valor).
  2. Puedes crear el diccionario con un bucle o con una comprensión.
  3. Maneja los casos borde antes de recorrer la lista.

Solución explicada (paso a paso)

  1. Si la lista es None, no hay elementos → devolvemos {}.
  2. Si la entrada no es una lista, lanzamos TypeError.
  3. Creamos un diccionario vacío.
  4. Recorremos la lista usando enumerate para obtener índice y valor.
  5. Asignamos cada par al diccionario.
  6. Devolvemos el diccionario resultante.

Ejecuta:

  • pytest -q

Variantes para subir de nivel (opcional)

  1. Usar comprensión de diccionarios
  2. Soportar tuple además de list
  3. Invertir el mapeo: valor → índice
  4. Empezar índices en 1 (configurable)

Lo que aprendiste

  • Cómo usar enumerate correctamente
  • Conversión entre estructuras de datos
  • Validación clara de entradas
  • Tests para estructuras simples

Accede al código completo y a los tests en GitHub para ejecutar y modificar la solución localmente.

Con este reto completas los 12 retos de nivel Principiante.
El siguiente paso natural es Intermedio — Reto #13: Agrupar elementos por clave para empezar a trabajar con patrones reales de datos.