created: 2020-11-16T10:14:09.000Z

pythonで辞書をdict()したときの値のコピーのされかたがshallow-copyなのを確認

pythonで dict() を呼ぶとdict-likeな値をdictにキャストできる。 もとの辞書の値がコピーされているのだが、shallow copyなのかどうなのかを確認した。

d1 = {1: 2, 3: {4: 5}}
d2 = dict(d1)
assert d1 == d2  # 等価

d1[1] = 'a'        # 元のdictの値を変更しても
assert d2[1] == 2  # コピーされたdictの値は変わらない

d1[3][4] = 'a'          # 深いところの値を変更すると
assert d2[3][4] == 'a'  # shallow-copyなのでdictこっちの値は変わってしまう