[pyar] Puzzler de Python

Facundo Batista facundobatista en gmail.com
Vie Oct 25 15:00:52 -03 2019


El vie., 25 de oct. de 2019 a la(s) 10:57, Agustin Barto
(abarto en gmail.com) escribió:
>
> Estimadxs:
>
> Mientras estaba tratando de resolver un problema en el trabajo me encontré con una salida que no esperaba. Investigando la raiz del problema, me encontré con una curiosidad que destilé en el siguiente ejemplo.
>
> La salida muestra la proyección de la lista de diccionarios sobre el campo "b" en lugar de "a". La solución es cambiar los generadores por listas en la definición de "t", pero no me queda muy claro porque funciona mal con generadores.

Como es un generador, realmente el "valor de cada clave en el
diccionario t" no se arma hasta que consumís ese generador (porque es
un generador, justamente, no "gira" hasta que no necesitás que
"empiece a entregar resultados").

En tu caso, cuando vas y hacés `list(t['a'])` estás haciendo girar el
generador, el cual es: `(e[d] for e in s)`. El punto es que en *ese*
momento, d es 'b'.

Saludos,



-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org.ar/
Twitter: @facundobatista


Más información sobre la lista de distribución pyar