Python lambda não lembra de argumento em loop [duplicate]

Duplicata Possível:
Use o valor da variável na expressão lambda

Eu estou trabalhando com python e tentando isolar um problema que tive com funções lambda.

Do código a seguir, eu esperava criar duas funções lambda, cada uma obtendo um x diferente, e a saída deveria ser
1 2

mas a saída é 2 2

Por quê? E como posso fazer duas funções diferentes? Usando def?

def main():
    d = {}
    for x in [1,2]:
        d[x] = lambda : print(x)

    d[1]()
    d[2]()


if __name__ == '__main__':
    main()

questionAnswers(3)

yourAnswerToTheQuestion