A compreensão de dicionário com funções lambda fornece resultados incorretos
Eu tentei o seguinte código no Python 3.5.1:
>>> f = {x: (lambda y: x) for x in range(10)}
>>> f[5](3)
9
É óbvio que isso deve retornar5
. Não entendo de onde vem o outro valor e não consegui encontrar nada.
Parece que é algo relacionado à referência - sempre retorna a resposta def[9]
, que é a última função atribuída.
Qual é o erro aqui e como isso deve ser feito para que funcione corretamente?