Я пытаюсь динамически обновлять значения для ключа dict()
с помощью цикла for.
def update_dict():
f = []
for i, j in enumerate(list_range):
test_dict.update({'a': i})
j['c'] = test_dict
print(j)
f.append(j)
print(f)
test_dict = dict({'a': 1})
list_range = [{'b': i} for i in range(0, 5)]
update_dict()
Даже print(j)
дает итеративное значение (0,1,2,3,4)
, так или иначе последний дикт переписывается по всему списку и выдает неправильный вывод (4,4,4,4,4)
.
Ожидаемый вывод,
[{'b': 0, 'c': {'a': 0}}, {'b': 1, 'c': {'a': 1}}, {'b': 2, 'c': {'a': 2}}, {'b': 3, 'c': {'a': 3}}, {'b': 4, 'c': {'a': 4}}]
Полученный вывод,
[{'b': 0, 'c': {'a': 4}}, {'b': 1, 'c': {'a': 4}}, {'b': 2, 'c': {'a': 4}}, {'b': 3, 'c': {'a': 4}}, {'b': 4, 'c': {'a': 4}}]
Мне нужно понять, как словари перезаписываются и что может быть лучшим решением, чтобы избежать этого?
Заранее спасибо!
PS: пожалуйста, избегайте предлагать метод списка или диктов в качестве простого ответа, поскольку я знаю о них, и единственная цель этого вопроса - понять неправильное поведениеDICT ().