Pythonの連想配列のfor
Pythonでいつも忘れて変なことになるのでメモしておく。 連想配列(辞書)をforで受けるとkeyしか出てこない、という話。
a={"key1":"val1", "key2":"val2"}
for i,j in a:
print i, j
と書くとエラー。forでi,jを受け取れない。Perlから来た人は、ここでもうブチ切れですよ(うそ)。しょうがないから
a={"key1":"val1", "key2":"val2"}
for i in a:
print i, a[i]
などと書くと素人なのだ(私は思い出せなくていつもこうなってしまう)。正しくは、
a={"key1":"val1", "key2":"val2"}
for i,j in a.items():
print i, j
である。items()を忘れるな、ということだ。おもむろにdir({1:2})とやってメソッドのリストを眺めて思い出そう。iteritems()でイテレータがもらえる。