Почему не изменяется словарь в массиве?


a = [{'name': '127345', 'digit': 12345}, {'name': '134256547', 'digit': 12355545}]
e = []

for i in a:
    i['name'].replace('7', '9')
    e.append(i)
print(e)

Поменял 7 на 9, а изменения не сохраняются, в новый список сохраняется тоже самое, как мне сохранить в переменной изменения которые проделаны в цикле?


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

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

Вам надо сохранить результат замены:

a = [{'name': '127345', 'digit': 12345}, {'name': '134256547', 'digit': 12355545}]
e = []

for i in a:
    new_val = i.copy()
    new_val['name'] = new_val['name'].replace('7', '9')
    e.append(new_val)
print(e)

Обратите внимание на i.copy(), если вы напишите так,

a = [{'name': '127345', 'digit': 12345}, {'name': '134256547', 'digit': 12355545}]
e = []

for i in a:
    i['name'] = i['name'].replace('7', '9')
    e.append(i)
print(e)
print(a)

то у вас изменятся словари и в списке a введите сюда описание изображения

→ Ссылка