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:
- Reciba un valor
lista. - Si
listaesNone, devuelva un diccionario vacío{}. - Si
listano es una lista (list), lanceTypeError. - Devuelva un diccionario donde:
- las claves sean los índices (empezando en 0),
- los valores sean los elementos de la lista.
- 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
enumerate(lista)devuelve pares(índice, valor).- Puedes crear el diccionario con un bucle o con una comprensión.
- Maneja los casos borde antes de recorrer la lista.
Solución explicada (paso a paso)
- Si la lista es
None, no hay elementos → devolvemos{}. - Si la entrada no es una lista, lanzamos
TypeError. - Creamos un diccionario vacío.
- Recorremos la lista usando
enumeratepara obtener índice y valor. - Asignamos cada par al diccionario.
- Devolvemos el diccionario resultante.
Ejecuta:
pytest -q
Variantes para subir de nivel (opcional)
- Usar comprensión de diccionarios
- Soportar
tupleademás delist - Invertir el mapeo: valor → índice
- Empezar índices en 1 (configurable)
Lo que aprendiste
- Cómo usar
enumeratecorrectamente - 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.