概要
dict をコピーして別の dict を作成する場合に dict の値を上書きする場合には必ず copy() メソッドを使いましょうという話です 配列の中に dict があっても copy() を使います
環境
- macOS 11.5
- Python 3.8.3
サンプルコード: ダメな例
aa = [{"key":"value"}]
bb = aa.copy()
for b in bb:
b["key"] = "value2"
print(aa) # -> [{'key': 'value2'}]
print(bb) # -> [{'key': 'value2'}]
サンプルコード: 良い例
aa = [{"key":"value"}]
bb = aa.copy()
for i, b in enumerate(bb):
tb = b.copy()
tb["key"] = "value2"
bb[i] = tb
print(aa) # -> [{'key': 'value'}]
print(bb) # -> [{'key': 'value2'}]
最後に
もう少し良い解決方法がありそう
deepcopy という手法があるようです
0 件のコメント:
コメントを投稿