Pythonの連想配列のfor

Pythonでいつも忘れて変なことになるのでメモしておく。

連想配列(辞書)をforで受けるとkeyしか出てこない、という話。

a={"key1":"val1", "key2":"val2"}
for i,j in a:
  print i, j

と書くとエラー。fori,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()でイテレータがもらえる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です