d = {1:[]}
dic = d.copy()
dic[1].append(2)
print "d=", d
print "dic=", dic
出力
d= {1:[2]}
dic= {1:[2]}
dic
変更せずに割り当てd
て返す方法
d= {1:[]}
dic= {1:[2]}
d = {1:[]}
dic = d.copy()
dic[1].append(2)
print "d=", d
print "dic=", dic
d= {1:[2]}
dic= {1:[2]}
dic
変更せずに割り当てd
て返す方法
d= {1:[]}
dic= {1:[2]}
In [5]: import copy
In [6]: d = {1:[]}
In [7]: dic = copy.deepcopy(d)
In [8]: dic[1].append(2)
In [9]: d
Out[9]: {1: []}
In [10]: dic
Out[10]: {1: [2]}
あなたが今持っているのは浅いコピーです:それはただリスト参照のコピーを作成します。その結果、一方の辞書のリストの内容を変更すると、もう一方の辞書も変更されます。
deepcopy
(の代わりに)関数を使用copy
して、と同じ新しい辞書を作成できますd
。でインポートすることを忘れないでくださいfrom copy import deepcopy
。