Понимание словаря с помощью лямбда-функций дает неверные результаты

Я попробовал следующий код в Python 3.5.1:

>>> f = {x: (lambda y: x) for x in range(10)}
>>> f[5](3)
9

Очевидно, что это должно вернуться5, Я не понимаю, откуда взялась другая ценность, и я не смог ничего найти.

Кажется, что это что-то связано со ссылкой - это всегда возвращает ответf[9], которая является последней назначенной функцией.

В чем здесь ошибка, и как это сделать, чтобы она работала правильно?

Ответы на вопрос(2)

Ваш ответ на вопрос