
Nicolás Prieto
PreguntaNo entiendo el último ejercicio, no es clara la explicación. Entiendo el elemento iterable name:age pero no entiendo porque después del FOR se crea una tupla (name,age), esto no es NADA CLARO.

Jonas Ivan Tsuchida
Hola compañero. A mí también me está costando entender la última parte. En estos casos creo que lo mejor es ir de menor a mayor para tratar de entender de a partes. Hay muchas conceptos combinados en una sola línea y para colmo apareció un método "zip ( )" que no habíamos visto anteriormente.
Te recomiendo hacer estas pruebas para intentar entender que hace cada cosa, yendo de menor a mayor.:
Supongamos que tenemos dos listas
paises=["Argentina", "Brasil", "Chile"] codigo_pais = ["AR", "BR", "CH"]
Qué es lo que hace el método zip () ? Genera un objeto del tipo "zip", que tiene un listado de tuplas, donde se combina un elemento de la primer lista, y otro elemento de la otra lista; en cada una de estas tuplas. No puedo imprimirlo directamente, sino que tengo que convertirlo en lista para poder visualizar esta combinación.
Código
cruce_listas = zip(paises, codigo_pais) print(type(cruce_listas)) print(cruce_listas) print(list(cruce_listas))
Output
<class 'zip'> <zip object at 0x7f594b446dc0> [('Argentina', 'AR'), ('Brasil', 'BR'), ('Chile', 'CH')]
El 'zip' es un objeto iterable, por lo que podemos hacer uso del ciclo for para ir recorriendo cada una de estas tuplas.
Código
for elemento in zip(paises,codigo_pais): print(elemento)
En este código, elemento representa cada una de las tuplas, por lo que podemos imprimir cada tupla en cada iteración del objeto "zip". Output
('Argentina', 'AR') ('Brasil', 'BR') ('Chile', 'CH')
Ahora viene la parte más complicada de entender, y creo que el punto clave de la cuestión.
Código
for (clave_de_tupla, valor_de_tupla) in zip(paises,codigo_pais): print("pais:", clave_de_tupla) print("codigo_pais:", valor_de_tupla)
Es decir, no solo podría acceder a cada tupla como vimos en el ejemplo anterior, sino que para cada una de las tuplas podemos acceder directamente a su clave y valor como vemos en el ejemplo de arriba. Output
pais: Argentina codigo_pais: AR pais: Brasil codigo_pais: BR pais: Chile codigo_pais: CH
Ahora, volviendo al ejercicio de la clase:
new_dict = {name:age for (name,age) in zip(names,ages)}
En cada iteración del objeto zip , "name" y "age" representan los valores de la tupla , y esos valores son los que se inyectan en la primera parte "name:age" , para poder formar el objeto diccionario.
Espero haberte ayudado. Y si seguis sin entenderlo, te recomiendo que hagas pruebas por tu cuenta. Quizás no lo entiendas mediante la teoría pero sí con la práctica. Un abrazo!

David Antonio Morales Barrera
Te recomiendo repasar la clase anterior y luego ver esta de nuevo.
Esta es la sintaxis sin el formato "comprehension":
new_dict = {} for (name, age) in zip(names, ages): new_dict[name] = age print(new_dict)