Python辞書のループ処理:for文でキー・値・要素ペアを回す方法

Pythonの辞書(dict)に格納されたすべてのデータに対して、順番に処理を行いたい場合、for 文を使用します。

リストのループ処理とは異なり、辞書には「キー」「値」「キーと値のペア」という3つの要素が存在するため、目的に応じてメソッドを使い分ける必要があります。

この記事では、辞書データに対する3種類のループ処理について解説します。

目次

1. キー (Key) をループする

辞書の「キー」だけを順番に取り出したい場合、最も一般的な方法は辞書オブジェクトをそのまま for 文に渡すことです。

構文:

for キー変数 in 辞書:
    # 処理

また、.keys() メソッドを使っても同様の結果が得られます。明示的に「キーを処理している」と示したい場合はこちらを使うこともあります。

使用例: 各国の国コード(キー)を表示するプログラムです。

# 国コードと国名の辞書
country_codes = {
    "JP": "Japan",
    "US": "United States",
    "GB": "United Kingdom",
    "FR": "France"
}

print("--- 登録されている国コード ---")

# 辞書を直接ループさせると、キーが取り出される
for code in country_codes:
    print(f"Code: {code}")

# .keys() を使っても同じ結果になる
# for code in country_codes.keys():
#     print(f"Code: {code}")

実行結果:

--- 登録されている国コード ---
Code: JP
Code: US
Code: GB
Code: FR

2. 値 (Value) をループする

辞書の「値」だけを取り出して処理したい場合は、.values() メソッドを使用します。

構文:

for 値変数 in 辞書.values():
    # 処理

使用例: 各教科のテストの点数(値)を取り出し、合計点を計算するプログラムです。

# 教科と点数の辞書
test_scores = {
    "Math": 85,
    "Science": 92,
    "History": 78,
    "English": 88
}

total_score = 0

print("--- 点数一覧 ---")

# .values() で値だけをループ
for score in test_scores.values():
    print(f"{score}点")
    total_score += score

print(f"合計点: {total_score}")

実行結果:

--- 点数一覧 ---
85点
92点
78点
88点
合計点: 343

3. キーと値のペア (Item) をループする

「キー」と「値」の両方を同時に取り出して処理したい場合は、.items() メソッドを使用します。 このメソッドは (キー, 値) のタプルを返すため、for 文で変数を2つ指定してアンパック(展開)して受け取ります。

構文:

for キー変数, 値変数 in 辞書.items():
    # 処理

使用例: 商品の在庫管理データから、商品名(キー)と在庫数(値)を同時に表示するプログラムです。

# 商品名と在庫数の辞書
inventory = {
    "Laptop": 15,
    "Mouse": 50,
    "Keyboard": 30,
    "Monitor": 8
}

print("--- 在庫状況 ---")

# .items() でキーと値を同時に取得
for product, count in inventory.items():
    status = "在庫あり" if count > 10 else "残りわずか"
    print(f"商品名: {product} | 在庫数: {count} ({status})")

実行結果:

--- 在庫状況 ---
商品名: Laptop | 在庫数: 15 (在庫あり)
商品名: Mouse | 在庫数: 50 (在庫あり)
商品名: Keyboard | 在庫数: 30 (在庫あり)
商品名: Monitor | 在庫数: 8 (残りわずか)

まとめ

辞書のループ処理は、どのデータが必要かに応じて以下の3つを使い分けます。

  • キーが必要: for key in d: (または d.keys()
  • 値が必要: for value in d.values():
  • 両方が必要: for key, value in d.items():

特に .items() は、キーを使って値を再検索する手間が省けるため、両方のデータを使う場合には最も効率的で読みやすい方法です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次