のドキュメントを読んでいる間dict.copy()
、辞書の浅いコピーを作成すると書かれています。私がフォローしている本(BeazleyのPythonリファレンス)についても同じことが言えます。
m.copy()メソッドは、マッピングオブジェクトに含まれる項目の浅いコピーを作成し、それらを新しいマッピングオブジェクトに配置します。
このことを考慮:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
そのoriginal
ため、浅いコピーを行っていたため、これにより値が更新される(そして「c」が追加される:3)と想定しました。あなたがリストのためにそれをするかのように:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
これは期待どおりに機能します。
どちらも浅いコピーなので、なぜdict.copy()
期待どおりに動作しないのですか?または、浅いコピーと深いコピーの私の理解に欠陥がありますか?