Pythonのリストでハマった

Pythonのリストでちょっとハマったのでメモ.
慣れてない人はちょいちょいするらしい.

python,append,リスト,辞書

Pythonで辞書をたくさん作ってそれをリストにまとめて整理しようとしていました.

dict = {}
lst = []
for i in ["A","B","C"]:
	dict[i] = i
	lst.append(dict)
	dict.clear()
print lst

と書いた場合,気持ち的には
辞書に要素追加→リストに辞書を追加→新しい辞書を作る→リストに追加
みたいなことをしたかったのですが

[{}, {}, {}]

ってなってしまう.(さすがにハマった時はもう少し面倒な処理してたんですよ)

dict = {}
lst = []
for i in ["A","B","C"]:
	dict[i] = i
	lst.append(dict)
	dict = {}
	#dict.clear()
print lst

ってしてやれば,ちゃんと

[{'A': 'A'}, {'B': 'B'}, {'C': 'C'}]

って出ます.
これは,appendがdictのポインタをリストに引っ付けているためで,dictをいじれば当然リストの中身の辞書も書き換わります.

まだまだオブジェクト指向がわかっていませんね.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です