2015-06-23 31 views
2

在Python 3.4中,我試圖從字典中檢索一個值,將其改爲在程序中的其他位置使用,但是我發現字典表現出以下行爲:從字典中獲取一個沒有鏈接到內存位置的值

>>> D = {"A":[1,2,3]} 
>>> C = D["A"] 
>>> C.append(4) 
>>> D["A"] 
[1, 2, 3, 4] 
>>> F = D.get("A") 
>>> F.append(5) 
>>> D["A"] 
[1, 2, 3, 4, 5] 

有沒有解決的辦法,所以我可以從字典中的值賦給沒有他們鏈接這樣的變量?

+0

列表的副本是否足夠? –

回答

1

詞典不保留對象值只是對對象的引用。

您需要將列表的副本分配給另一個變量名,你可以使用[:]創建一個淺表副本:

>>> D = {"A":[1,2,3]} 
>>> C = D["A"][:] 
>>> C.append(4) 
>>> D["A"] 
[1, 2, 3] 

或者使用copy模塊:

>>> import copy 
>>> C = copy.copy(D["A"]) 
>>> C.append(4) 
>>> D["A"] 
[1, 2, 3] 
1

一個非常簡單的解決方案是使用[:]複製詞典中的列表,然後使用它。

示例 -

>>> D = {"A":[1,2,3]} 
>>> C = D["A"][:] 
>>> C.append(4) 
>>> C 
[1, 2, 3, 4] 
>>> D["A"] 
[1, 2, 3] 

請注意,這會使這份名單的副本。