以下のコードに少し戸惑っています。
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
私が理解できないのは key
の部分です。Pythonはどのようにして、辞書からキーを読み取るだけでよいと認識するのでしょうか?Pythonでは key
は特別な言葉なのでしょうか?それとも、単なる変数なのでしょうか?
key`は単なる変数名です。
for key in d:
は、キーと値ではなく、単に辞書のキーをループします。 キーと値の両方をループさせるには次のようにします。
Python 2.x の場合。
for key, value in d.iteritems():
Python 3.xの場合。
for key, value in d.items():
自分でテストするには、単語 key
を poop
に変更してください。
Python 3.x では、iteritems()
は単純に items()
に置き換えられました。これは、iteritems()
のような、しかしさらに優れた、dict でバックアップされたセットのようなビューを返します。
これは 2.7 では viewitems()
としても利用可能です。
items()という操作は 2 と 3 の両方で動作しますが、2 では辞書の
(key, value)ペアのリストが返され、
items()の呼び出し後に行われた dict への変更は反映されません。3.xで2.xの動作をさせたい場合は、
list(d.items())`を呼び出します。
for ... in ...構文を使用して辞書を反復処理する場合、常にキーを反復処理します(値は
dictionary[key]` を使用してアクセスできます)。
キーと値のペアを繰り返し処理するには、Python 2 では for k,v in s.iteritems()
を、Python 3 では for k,v in s.items()
を使用します。
これは非常に一般的なループのイディオムです。inは演算子です。どのような場合に
for key in dictを使い、どのような場合に
for key in dict.keys()` としなければならないかについては David Goodger's Idiomatic Python article (archived copy) を参照してください。