ホームページ >バックエンド開発 >Python チュートリアル >辞書の浅いコピーを更新しても元の辞書が変更されないのはなぜですか?
浅いコピーについて理解する
場合辞書の浅いコピーを作成する場合、辞書オブジェクトは完全にはコピーされません。代わりに、元のオブジェクトへの新しい参照が作成されます。これは、浅いコピーに加えられた変更はすべて元の辞書にも反映されることを意味します。
例: Dictionary
次の例を考えてみましょう:
original = dict(a=1, b=2) new = original.copy() new.update({'c': 3})
この場合、新しいとはオリジナルの浅いコピーです。 new が {'c': 3} で更新されると、元の辞書と new の両方が同じ基になるオブジェクトを参照するため、元の辞書は変更されません。
リスト内の浅いコピーとの対比
リストは浅くコピーされると動作が異なります。リストの浅いコピーを作成すると、基になるリスト オブジェクトへの新しい参照が作成されます。ただし、リストは個別に変更できる可変オブジェクトであるため、浅いコピーに加えられた変更は元のリストには影響しません。
ディープ コピーについて
浅いコピーとは異なりますコピー、ディープコピーでは、元のオブジェクトの新しい独立したコピーが作成されます。これは、ディープ コピーに加えられた変更は元のオブジェクトには影響しないことを意味します。
解決策
元の辞書を更新するには、ディープ コピーを作成する必要があります。浅いコピーの代わりに。次のコードは、copy.deepcopy() を使用してディープ コピーを作成します。
import copy new = copy.deepcopy(original) new.update({'c': 3})
これで、オリジナルは変更されず、新しい値は更新されます。
以上が辞書の浅いコピーを更新しても元の辞書が変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。