dogrunjp
3/24/2014 - 8:45 PM

Pythonのリストにdict型の変数をappendすると変数がポインタ的に振る舞うので…

Pythonのリストにdict型の変数をappendすると変数がポインタ的に振る舞うので…

リストに複数のdictをappendしようとすると下のように書いた場合、追加したすべてのdict型の変数が同じ値になる。
mylist = []
mydict = {}
for i,v in enumerate(items):
  mydict['name'] = v
  mydict['value'] = i
  mylist.append(mydict)
  
この場合dict.copy()を使うと適切な結果になる。
for i, v enumerate(items):
  mydict['name'] = v
  mydict['value'] = i
  mylist.append(mydict.copy())