Я пытаюсь создать последовательность похожих словарей для дальнейшего хранения их в кортеже. Я попробовал два подхода, используя и не используя для циклаПоследовательность словарей в python
Без цикл
dic0 = {'modo': lambda x: x[0]}
dic1 = {'modo': lambda x: x[1]}
lst = []
lst.append(dic0)
lst.append(dic1)
tup = tuple(lst)
dic0 = tup[0]
dic1 = tup[1]
f0 = dic0['modo']
f1 = dic1['modo']
x = np.array([0,1])
print (f0(x) , f1(x)) # 0 , 1
С для цикла
lst = []
for j in range(0,2):
dic = {}
dic = {'modo': lambda x: x[j]}
lst.insert(j,dic)
tup = tuple(lst)
dic0 = tup[0]
dic1 = tup[1]
f0 = dic0['modo']
f1 = dic1['modo']
x = np.array([0,1])
print (f0(x) , f1(x)) # 1 , 1
Я действительно не понимаю, почему я получаю разные результаты. Кажется, что последний словарь, который я вставляю, перезаписывает предыдущие, но я не знаю, почему (метод append не работает).
Любая помощь будет действительно приветствовал
in lambda x: x [j]} ',' j' оценивается при выполнении лямбда, поэтому его значение всегда 1 – njzk2