前回少しだけ紹介した辞書のループ処理ですが、苦手とする方が多いため本ページでもう少し詳しく解説します。
3種類の基本ループ処理
辞書のループは、大別すると以下の3種類あります。
- キーのループ
- 値のループ
- キーと値のループ
キーのループ
まず、一番単純なものから説明します。リストと同じ構文でfor、inでループを行うと辞書のキーがループの変数として使用できます。
処理
以下のサンプルのようにループ中でキーを用いて値を取得することが可能です。
d = {'key1': 110, 'key2': 270, 'key3': 350} for key in d: print(key) # key1〜key3が出力される print(d[key]) # それぞれのkeyに対応する値が出力される
値のループ
辞書に用意されているvaluesメソッドを利用すると、dict_valuesという値のイテレータが得られるのですが、これを使用すると値でループすることができます。
処理
以下のサンプルではvaluesメソッドを使用してループ内で辞書の値を出力しています。
d = {'key1': 110, 'key2': 270, 'key3': 350} for value in d.values(): print(value) # 値が出力される
キーと値のループ
辞書に用意されているitemsメソッドを利用すると、dict_itemsというキーと値のイテレータが得られ、これを使用してキーと値両方でループすることができます。
処理
以下のサンプルではitemsメソッドを使用してループ内で辞書のキーと値を出力しています。
d = {'key1': 110, 'key2': 270, 'key3': 350} for key, value in d.items(): print(key, value) # キーと値が出力される
ループインデックスを取得する
ここから少し複雑になります。何番目の要素だけは処理をしない、等の処理を入れたい場合はループインデックスが必要となります。リストと同様、組込みのenumerate関数を利用することで取得することができます。
処理
以下のサンプルではループ内で辞書のキーとループインデックスを出力しています。
d = {'key1': 110, 'key2': 270, 'key3': 350} for i, key in enumerate(d): print(i, key) # ループインデックスとキーが出力
また、itemsと組み合わせる場合は、丸括弧でキーと値を囲みます。
処理
以下のサンプルではループインデックスと、キー、値をループ内で出力しています。
d = {'key1': 110, 'key2': 270, 'key3': 350} for i, (key, value) in enumerate(d.items()): print(i, key, value) # ループインデックスとkeyと値が出力
2021/4 上のサンプルコードの最初のループの解説コメントと変数名が誤っていたため修正しました(ループインデックスと値が出力 → ループインデックスとキーが出力)。ご連絡くださった方ありがとうございます。