【Python】レッスン4-12:辞書のループ処理を理解しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:辞書のループ処理

この記事の練習問題で使用する知識:
1.基礎文法、2.制御構造、3.関数とスコープ、4.データ構造5.オブジェクト指向

<<前のページ Python記事一覧
次のページ>>

Pythonの「辞書のループ処理」とは

この章ではPythonにおける「辞書のループ処理」の意味や使い方を学習します。必要ない方はここをクリックして練習問題へ飛びましょう。



辞書はキーと値のペアを持つデータ構造ですが、辞書内のデータを順に処理するためにはループを使用します。

この解説では、Pythonで辞書をループ処理する際の具体的な方法を紹介します。

辞書のループ処理方法

Pythonでは辞書のキー、値、またはその両方をループ処理するために、いくつかの便利なメソッドが用意されています。

代表的なメソッドは以下の通りです。

  • keys() メソッド
    keys() は辞書のすべてのキーを取得します。これを for ループで使うことで、各キーに対して処理を実行できます。
  • values() メソッド
    values() は辞書のすべての値を取得します。値だけに対してループを行いたい場合に使用します。
  • items() メソッド
    items() は辞書のキーと値のペアを同時に取得できます。これにより、ループ内でキーと値を同時に操作することが可能です。

使用例

次に、具体的なコード例を見てみましょう。

# 辞書を定義
student_scores = {
    "Alice": 85,
    "Bob": 92,
    "Charlie": 78
}

# keys() を使ってキー(名前)だけをループ処理
for name in student_scores.keys():
    print(f"学生の名前: {name}")

# values() を使って値(スコア)だけをループ処理
for score in student_scores.values():
    print(f"スコア: {score}")

# items() を使ってキーと値のペアをループ処理
for name, score in student_scores.items():
    print(f"{name} のスコアは {score} 点です")

このコードでは辞書 student_scores を定義し、それぞれ keys()values()、および items() メソッドを使って異なる方法でループ処理を行っています。

  • keys() では、各学生の名前だけを取得して表示します。
  • values() では、スコアだけを取り出して表示します。
  • items() では、名前とスコアの両方を同時にループして、個別に出力します。

まとめ

辞書のループ処理はkeys()values()、および items() などのメソッドを使うことで非常に簡単に行えます。

キー、値、またはその両方を適切に操作する方法を理解しておくことで、より効率的にデータを扱うことが可能になります。

練習問題4-12:辞書を使って名前とスコアを一覧表示しよう

学生の名前とスコアを管理する辞書を作成し、辞書のループ処理を学習しましょう。

問題の詳細条件

以下の要件に従ってコードを完成させてください。

  1. 辞書 student_scores を作成し、以下の3人の学生とスコアを登録すること。
    • 山田: 85点
    • 佐藤: 92点
    • 鈴木: 78点
  2. keys() を使用して、辞書に登録されている全ての学生の名前を順に表示すること。
  3. values() を使用して、辞書に登録されている全てのスコアを順に表示すること。
  4. items() とf文字列を使用して、各学生の名前とそのスコアを「〇〇 のスコアは △△ 点です」という形式で表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

学生の名前一覧:
山田
佐藤
鈴木

学生のスコア一覧:
85
92
78

学生の名前とスコア:
山田 のスコアは 85 点です
佐藤 のスコアは 92 点です
鈴木 のスコアは 78 点です

【ヒント】難しいと感じる人だけ見よう

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:辞書 student_scores を定義し、3人の学生とそのスコアを登録
2:print関数で「学生の名前一覧:」を表示
3:for文を使用して辞書のキーをループ処理
  □ print関数でキー(学生の名前)を表示
4:print関数で改行し、「学生のスコア一覧:」を表示
5:for文を使用して辞書の値をループ処理
  □ print関数で値(スコア)を表示
6:print関数で改行し、「学生の名前とスコア:」を表示
7:for文を使用して辞書のキーと値をループ処理
  □ print関数で「〇〇 のスコアは △△ 点です」という形式で表示

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 辞書を定義し、学生の名前とスコアを登録してください
student_scores = {
    "山田": 85,
    "佐藤": 92,
    "鈴木": 78
}

# 【穴埋め問題1】
"""ここにfor文を使用して、辞書のキー(学生の名前)をループ処理し、各名前を表示するコードを書いてください。"""

# 【穴埋め問題2】
"""ここにfor文を使用して、辞書の値(スコア)をループ処理し、各スコアを表示するコードを書いてください。"""

# 【穴埋め問題3】
"""ここにfor文を使用して、辞書のキーと値を同時にループ処理し、各学生の名前とスコアを表示するコードを書いてください。"""

この問題の穴埋めコードは以上です。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



問題の答え合わせと解説

この問題の一つの正解例とそのコードの解説を以下に示します。

一つの正解例

例えば以下のようなプログラムが考えられます。

# 辞書の定義
student_scores = {
    "山田": 85,
    "佐藤": 92,
    "鈴木": 78
}

# keys() を使って辞書のキー(名前)をループ処理
# このループでは辞書のすべてのキーを取得して表示します
print("学生の名前一覧:")
for name in student_scores.keys():
    print(name)

# values() を使って辞書の値(スコア)をループ処理
# このループでは辞書のすべての値(スコア)を取得して表示します
print("\n学生のスコア一覧:")
for score in student_scores.values():
    print(score)

# items() を使ってキーと値のペアをループ処理
# このループではキーと値(名前とスコア)を同時に取得し、フォーマットして表示します
print("\n学生の名前とスコア:")
for name, score in student_scores.items():
    print(f"{name} のスコアは {score} 点です")

正解例の詳細解説

このコードではPythonの辞書(dictionary)を使い、学生の名前とスコアを登録。その後ループ処理を使って情報を表示しています。

辞書の定義

student_scores = {
    "山田": 85,
    "佐藤": 92,
    "鈴木": 78
}

この部分では辞書 student_scores を定義しています。

"山田""佐藤""鈴木"がキーで、それぞれの学生に対応するスコア(85、92、78)が値として設定されています。

辞書のキーをループ処理して表示

for name in student_scores.keys():
    print(name)

keys() メソッドを使用することで辞書内のすべてのキー(この場合は学生の名前)を取得できます。

for ループでこのキーを順に取り出し、print() 関数を使って表示しています。このコードを実行すると、登録された学生の名前(山田、佐藤、鈴木)が順に表示されます。

辞書の値をループ処理して表示

for score in student_scores.values():
    print(score)

values() メソッドを使用すると、辞書のすべての値(この場合はスコア)を取得できます。

for ループでスコアを順に表示し、結果として学生の点数が表示されます。

辞書のキーと値を同時にループ処理

for name, score in student_scores.items():
    print(f"{name} のスコアは {score} 点です")

items() メソッドを使うと辞書のキーと値をペアとして同時に取得できます。

for ループ内でキー(名前)と値(スコア)を取り出し、print() で整形して表示します。

ここでは、f 文字列を使ってフォーマットしており、"{name} のスコアは {score} 点です" の形で出力されます。

まとめ

このコードでは辞書とそのループ処理を学びました。

keys() でキーを取り出し、values() で値を取り出し、items() でキーと値のペアを一度に扱うことができます。

Pythonの辞書は、複数のデータを効率的に管理し、簡単に操作できる便利なツールです。この機会にぜひ、他の辞書操作も試してみましょう!

<<前のページ Python記事一覧
次のページ>>

質問用コンタクトフォーム

この記事はAIを用いて書いた記事です。

人間の目による確認も行っていますが、もし間違い等ありましたらご指摘頂けると大変助かります。






    Python記事一覧へ戻る
    トップページへ戻る