Присвоение значения одной переменной к другой (проблема)?

у меня есть переменная , которую я получаю из бд и перед записью обнуленого участка бд , я присваиваю ей изначальное значение другой переменной , однако при изменении второй меняется и первая. короче , вот код:
fa = users
                                    fa['mins'] = {}
                                    with open("xxx/" + str(ids) + "/users.json", 'w+') as f:
                                        json.dump(fa, f)

изначально имею словарь users и он является моим users.json , и перед обновлением файла , дублирую в другую переменную , часть которой обнуляю для записи в файл , но удаляется эта часть так же и из оригинала. явно я чего-то не знаю о пайтоне , подскажите пожалуйста
  • Вопрос задан
  • 301 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Используя обычное = вы создаете ссылку на объект. В результате обе переменные ссылаются на один и тот же список/словарь/etc, соответственно, редактируя fa меняется и users.
a = {'some': 'var'}
b = a
print(id(a) == id(b))


Для подобного копирования list / dict используйте copy

import copy

fa = copy.deepcopy(users)


Для образования можно глянуть https://medium.com/@meghamohan/mutable-and-immutab...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ScriptKiddo
@ScriptKiddo
from copy import deepcopy

fa = deepcopy(users)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы