任意個のdictが入ったlistを初期化してえなぁ
どうやったらいいかな?
とりあえずこうやってみるかな
>> hoge = [{}]*5
>> hoge
[{},{},{},{},{}]
できてるっぽいな?
試しになんか代入してみるかな
>>> hoge[0]["huga"] = 1919
>>> hoge
[{'huga': 1919}, {'huga': 1919}, {'huga': 1919}, {'huga': 1919}, {'huga': 1919}]
は?
なぜこうなったか
単に同じオブジェクトの参照が複製されてlistに格納されたのでこういうことになっている
つまり全部同じdictということ
例えばこうやると別のdictが入るので問題はない
>>> hoge[0] = {}
>>> hoge
[{}, {'huga': 1919}, {'huga': 1919}, {'huga': 1919}, {'huga': 1919}]
別のdictを生成して代入しているのでまあこうなる
そもそも初期化する時に別のdict生成して入れたいんだが???
そういうときは内包表記とか使ってlistを生成してやれば良い
>>> hoge = [{"key":i} for i in range(5)]
>>> hoge
[{'key': 0}, {'key': 1}, {'key': 2}, {'key': 3}, {'key': 4}]
内部的にはforをぶん回して都度dictを生成しているので当然大丈夫
終わり
こんな感じのミスをして1日潰した