Python - 辞書(dict)のforループ(旧版)

dict(dictionary・ディクショナリ―・辞書・マッピング型)のキーと値をforループで処理する方法ついて解説します。

forループでキーと値を取得

辞書の items()メソッド を使用します。items()メソッド は キーと値 を含む ビューオブジェクト を返します。
ループ処理したい辞書 = { キー: 値, キー: 値 }

for key, value in ループ処理したい辞書.items():
    print(f'{key}={value}')

サンプルプログラム

次のサンプルコードは items()メソッド を使用し、dict(辞書)の内容を全て表示しています。
# ループ処理したい辞書(dict)
weekDict = {'Monday': '月曜日',
            'Tuesday': '火曜日',
            'Wednesday': '水曜日',
            'Thursday': '木曜日',
            'Friday': '金曜日',
            'Saturday': '土曜日',
            'Sunday': '日曜日'}

# for ループ + items()メソッドでキーと値を取得
for key, value in weekDict.items():
    print(f'{key}={value}')
サンプルコードの実行結果
サンプルコードの実行結果

forループでキーを同時に取得

キーのみ取得したい場合、リストのように辞書オブジェクトをそのまま for で使用します。 辞書.keys()メソッド や iter()関数 でも同様のループ処理が可能です。
# for
for key in ループ処理したい辞書:
    print(key)
# for + keys()メソッド
for key in ループ処理したい辞書.keys():
    print(key)
# for + iter()関数
for key in iter(ループ処理したい辞書):
    print(key)

サンプルプログラム

次のサンプルコードは for を使用し、dict(辞書)のキーを全て表示しています。
# for ループでキーを取得
for key in weekDict:
    print(key)
サンプルコードの実行結果
サンプルコードの実行結果

forループで値を取得

辞書の values()メソッド を使用します。 values()メソッド は 値を含む ビューオブジェクト を返します。
for value in ループ処理したい辞書.values():
    print(value)

サンプルプログラム

次のサンプルコードは items()メソッド を使用し、dict(辞書)の値を全て表示しています。
# for ループで値を取得
for value in weekDict.values():
    print(value)
サンプルコードの実行結果
サンプルコードの実行結果

for で キーと値 が取り出される順番について

Pythonバージョン3.7 から、キーが追加された順 に取得されることが保証されるようになりました。Pythonバージョン3.6 以前では取得順は不定で、同じソースコードでも実行環境などにより変わる可能性があります。Pythonのバージョンを調べるには次の記事を参照してください。

for ループの順序を逆転させる

組み込み関数 reversed() を使用します。reversed は 要素を逆順に取り出す イテレータ を返します。 辞書で reversed() 関数を使用するには、Pythonバージョン3.8以降が必要です。
# キーと値を取得
for key, value in reversed(weekDict.items()):
    print(f'{key}={value}')

# キーのみ取得
for key in reversed(weekDict):
    print(key)

# 値のみ取得
for value in reversed(weekDict.values()):
    print(value)

組み込み関数 reversed() の詳細は次の記事を参照してください。

サンプルコードの実行結果
サンプルコードの実行結果

for ループでの注意事項

for ループ内で要素の追加や削除を行うとエラーが発生します。

次のサンプルコードはループ中に要素を削除しようとしていますが、エラーが発生します。

# ループ中に要素を削除
for key in weekDict:
    # RuntimeError: dictionary changed size during iteration
    del weekDict[key]
サンプルコードの実行結果
サンプルコードの実行結果

サンプルコードのダウンロード

ダウンロードリンク

参考資料

検証環境