Словарь 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
Но использование параметра со значением оп умолчанию предпочтительнее