我想寫一個蒙特卡洛代碼,我在那裏優化字典中的元素。例如,我定義我原來的字典作爲蒙特卡羅算法python字典更新
A = {}
A[1] = ['a','b','c']
A[2] = ['d','e','f']
這導致
>>> A
{1: ['a', 'b', 'c'], 2: ['d', 'e', 'f']}
現在說在我蒙特卡洛試驗此舉是爲了採取隨機元素a,從A [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 2012-02-03 18:16:28
實際上,看到的方式是B = A製作A的副本並將其分配給B,但A是對字典的引用(並且其內容由對列表的引用組成)。我希望我已經有用... – jimifiki 2012-02-03 22:36:24