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?

questionAnswers(2)

yourAnswerToTheQuestion