Словарь python и передача ключа

Я хочу создать словарь, в котором значением будет объект - лямбда функция, вызываемая от своего же ключа т.е. dict[1]() вызовет лямбда функцию от 1 итд. Проблема в том, что я не знаю, как передать именно этот ключ функции, например, если буду в цикле складывать в словарь dict[key]=lambda: key+1, то в итоге для всех элементов будет вызываться функция с последним значением ключа


Ответы (2 шт):

Автор решения: Danis

Надо добавить не обязательный аргумент равный key

dict_ = {} 

for key in range(5):
    dict_[key] = lambda key=key: key + 1

В одну стрлку

dict_ = {key: lambda key=key: key + 1 for key in range(5)}
→ Ссылка
Автор решения: extrn

В качестве альтернативы

d = {}

for k in range(10):
  d[k] = (lambda k: lambda: k + 1)(k)

print(d[0]()) # 1
print(d[3]()) # 4

Но использование параметра со значением оп умолчанию предпочтительнее

→ Ссылка