d1 = {"dog":"woof", "cat":"meow"}
d2 = d1
d2["dog"] = "bark"
for i in d1:
print(i, d1[i])
dog bark
cat meow
什麼是做,所以最好的辦法:的Python:字典鏈接數據
dog woof
cat meow
d1 = {"dog":"woof", "cat":"meow"}
d2 = d1
d2["dog"] = "bark"
for i in d1:
print(i, d1[i])
dog bark
cat meow
什麼是做,所以最好的辦法:的Python:字典鏈接數據
dog woof
cat meow
d1 = {"dog":"woof", "cat":"meow"}
d2 = d1.copy() # make a copy, not a reference to the same dictionary
d2["dog"] = "bark"
for i in d1:
print(i, d1[i])
# dog woof
# cat meow
Copy字典:
d2 = d1.copy() # instead of d2 = d1
d1
和d2
指向同一個對象內存並因此更改d2
中的值將影響d1
。
d1 = {}
d2 = d1
print id(d1) == id(d2)
# out: True
使用字典類或複製模塊的複製方法。
d2 = d1.copy()
from copy import copy
d2 = copy(d1)
如果您有存儲在詞典(即列表)可變對象,並希望theese複製,以及,你應該使用deepcopy的功能。
from copy import deepcopy
d2 = deepcopy(d1)
在你的情況,無論是d1
和d2
是指同一個對象。使用copy.copy(d1)
d1.copy()
dict(d1)
copy.deepcopy(d1)
1,2,3將創建淺拷貝和4:您可以通過創建原始字典的副本將創建一個深拷貝
我想提出一個更好的方法來做到這一點。
from collections import ChainMap
d1 = {"dog":"woof", "cat":"meow"}
d2 = ChainMap({}, d1)
d2["dog"] = "bark"
for i in d1:
print(i, d1[i])
# dog woof
# cat meow
for i in d2:
print(i, d2[i])
# dog bark
# cat meow
請閱讀ChainMap的參考:https://docs.python.org/3/library/collections.html#collections.ChainMap
如果您使用python2,落實ChainMap,使用最少的代碼食譜:https://code.activestate.com/recipes/305268/
您還可以使用切片表示法。必須仔細檢查(在手機上),但在想要複製的項目之後使用[:]之類的東西。 – mikey