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()
でイテレータがもらえる。