La comprensión del diccionario con funciones lambda da resultados incorrectos
Intenté el siguiente código en Python 3.5.1:
>>> f = {x: (lambda y: x) for x in range(10)}
>>> f[5](3)
9
Es obvio que esto debería volver5
. No entiendo de dónde viene el otro valor, y no pude encontrar nada.
Parece que es algo relacionado con la referencia: siempre devuelve la respuesta def[9]
, que es la última función asignada.
¿Cuál es el error aquí y cómo debe hacerse para que funcione correctamente?