ホームページ > バックエンド開発 > Python チュートリアル > 辞書の浅いコピーを更新しても元の辞書が変更されないのはなぜですか?

辞書の浅いコピーを更新しても元の辞書が変更されないのはなぜですか?

Barbara Streisand
リリース: 2024-12-01 11:21:10
オリジナル
358 人が閲覧しました

Why Doesn't Updating a Shallow Copy of a Dictionary Change the Original?

「浅い」コピー辞書を更新しても「元の」辞書が更新されないのはなぜですか?

浅いコピーについて理解する

場合辞書の浅いコピーを作成する場合、辞書オブジェクトは完全にはコピーされません。代わりに、元のオブジェクトへの新しい参照が作成されます。これは、浅いコピーに加えられた変更はすべて元の辞書にも反映されることを意味します。

例: 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート