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