Python Lambda em um loop

Considerando o seguinte trecho de código:

# directorys == {'login': <object at ...>, 'home': <object at ...>}
for d in directorys:
    self.command["cd " + d] = (lambda : self.root.change_directory(d))

Espero criar um dicionário de duas funções da seguinte forma:

# Expected :
self.command == {
    "cd login": lambda: self.root.change_directory("login"),
    "cd home": lambda: self.root.change_directory("home")
}

mas parece que as duas funções lambda geradas são exatamente as mesmas:

# Result :
self.command == {
    "cd login": lambda: self.root.change_directory("login"),
    "cd home": lambda: self.root.change_directory("login")   # <- Why login ?
}

Eu realmente não entendo o porquê. Você tem alguma sugestão ?

questionAnswers(3)

yourAnswerToTheQuestion