Saltar al contenido principal
eLearner.app
Módulo 6 · Lección 2 de 422/36 en el curso~10 min
Lecciones del módulo (2/4)

Dict y set comprehension

La misma sintaxis de comprensión de listas también funciona para construir dict y set, simplemente cambiando los paréntesis.

Comprensión de dictados

Sintaxis: {chiave: valore for elemento in iterabile}.

Python
quadrati = {n: n * n for n in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Patrón frecuente: transformar una lista de tuplas en dictados.

Python
coppie = [("a", 1), ("b", 2), ("c", 3)]
d = {k: v for k, v in coppie}
# {'a': 1, 'b': 2, 'c': 3}
# (equivalente a dict(coppie) in questo caso)

Invertir claves y valores de un dict:

Python
originale = {"a": 1, "b": 2, "c": 3}
invertito = {v: k for k, v in originale.items()}
# {1: 'a', 2: 'b', 3: 'c'}

Filtrar un dictado:

Python
prezzi = {"mela": 1.2, "pera": 1.5, "kiwi": 2.5, "ananas": 4.0}
economici = {k: v for k, v in prezzi.items() if v < 2.0}
# {'mela': 1.2, 'pera': 1.5}

Establecer comprensión

Sintaxis: {espressione for elemento in iterabile}. Lo mismo que la lista. comprensión, pero con llaves.

Python
parole = ["ciao", "mondo", "ciao", "python"]
uniche = {p.upper() for p in parole}
# {'CIAO', 'MONDO', 'PYTHON'}

Iniciales únicas de una lista de nombres:

Python
nomi = ["Ada", "Linus", "Grace", "Alan", "Guido"]
iniziali = {n[0] for n in nomi}
# {'A', 'L', 'G'}

Filtro + transformación

Al igual que con la lista de comprensión, los filtros if finales:

Python
{n: n * n for n in range(10) if n % 2 == 0}
# {0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

Comprensión de dictados para intercambiar claves y valores

Un truco muy común para invertir un diccionario (intercambiar claves con valores, asumiendo que los valores son únicos) es:

Python
dizionario_orig = {'a': 1, 'b': 2}
dizionario_inv = {valore: chiave for chiave, valore in dizionario_orig.items()}
# risultato: {1: 'a', 2: 'b'}

Pruébalo tú mismo

Ejercicio#python.m6.l2.e1
Intentos: 0Cargando...

Dado `words = ['mela', 'pera', 'kiwi', 'banana']`, construya `lengths` como dict {palabra: len(palabra)}. Evaluar `lengths`.

Cargando editor...
Mostrar pista

{p: len(p) para p en palabras}

Solución disponible después de 3 intentos

Ejercicio de revisión

Ejercicio#python.m6.l2.e2
Intentos: 0Cargando...

Dado `nums = [1, 2, 2, 3, 4, 4, 5]`, construye `unique_squares` como el CONJUNTO de los cuadrados. Evaluar `unique_squares`.

Cargando editor...
Mostrar pista

Llaves sin ':' = comprensión del conjunto.

Solución disponible después de 3 intentos

Desafío adicional

Ejercicio#python.m6.l2.e3
Intentos: 0Cargando...

'Dada la lista de nombres `names = ["Alice", "Bob"]`, utilice una comprensión de dictado para crear un diccionario que asocie cada nombre con su longitud en caracteres. Guarde el diccionario en `name_lengths` y evalúelo.'

Cargando editor...
Mostrar pista

La sintaxis es {nombre: len(nombre) para nombre en nombres}.

Solución disponible después de 3 intentos