Я пытаюсь написать код Монте-Карло, где я оптимизирую элементы в словаре. Например, я определяю свой оригинальный словарь, какОбновление словаря python в алгоритме Монте-Карло
A = {}
A[1] = ['a','b','c']
A[2] = ['d','e','f']
Это приводит к
>>> A
{1: ['a', 'b', 'c'], 2: ['d', 'e', 'f']}
Теперь говорят, что пробный шаг в моем Монте-Карло, чтобы принять случайный элемент «а» из А [1] и положил его в A [2]. Тем не менее, я хочу сохранить свой оригинальный словарь. Поэтому я сначала создать новый словарь:
B = A
А затем в BI сделать необходимые изменения
B[1].remove('a')
B[2].append('a')
Это приводит к модифицированному словаря, который я хотел получить:
>>> B
{1: ['b', 'c'], 2: ['d', 'e', 'f', 'a']}
Однако это также изменило мой оригинальный словарь A, который я хотел бы сделать резервным.
>>> A
{1: ['b', 'c'], 2: ['d', 'e', 'f', 'a']}
Есть ли способ, которым я могу это сделать? Спасибо за помощь!
Почему вы думаете, что 'B = A' делает копию словаря? – kindall
На самом деле, как видим, B = A делает копию A и назначает ее B, но A является ссылкой на словарь (а его содержание состоит из ссылок на списки). Надеюсь, я был полезен ... – jimifiki