1

Python では、2 つの辞書を使用して、単純に

dict2 = dict1

dict2 が dict1 の別個のコピーになることはありません。それらは同じものを指すため、dict2 を変更すると、dict1 に対して同じ効果が実行されます。

1つの回避策は

dict2 = dict(dict1)

したがって、dict2 を変更しても、dict1 の値には影響しません。

私のプログラムでは、現在、以前の辞書の複数のコピーで構成される辞書を作成しています。前の辞書を temp2 と呼び、現在の辞書を temp3 と呼びましょう。事前に何部必要になるかわからないので、次のように考えました。

temp3 = {}
for i in xrange(some_number):
    temp3[i] = dict(temp2)

しかし、私のデバッグ テストでは、temp3[0] の辞書 (これも temp2 のコピーです) を変更すると、temp3[1] のコピーや temp3[2] なども変更されることが示されています。したがって、結果は辞書の n 個の同一のコピーで構成される辞書になります。ここで、n = some_number です。誰かが回避策を知っていますか? ありがとう。

編集: コメントに応じて、temp2 はリストである値で構成される辞書であるため、{a: [list1]、b: [list2] など}。

4

1 に答える 1

3

copy.deepcopy メソッドを試してください: http://docs.python.org/2/library/copy.html

于 2013-02-10T21:18:21.323 に答える