コース一覧
    Pythonコレクション
    辞書を走査

    Pythonコレクション

    リスト、辞書、集合、タプルなどのコレクションを学び、複数のデータを適切に扱えるようにします。

    1
    リストと辞書
    01. リストの追加と削除15分
    02. スライス15分
    03. 辞書の基本15分
    04. 辞書を走査15分
    05. keyでソート15分
    06. setで重複除去15分
    07. リスト内包表記15分
    08. タプルアンパック15分
    09. つくる:カテゴリ別集計15分
    10. 第7章クイズ10分

    辞書を走査

    items() でキーと値を取り出す

    for に辞書を渡すと、キーしか出てこない

    辞書を作れるようになると、次は中身を全部たどりたくなります。ところが辞書をそのまま for に渡すと、取れるのはキーだけです。

    Python

    record = {"name": "りんご", "price": 120}
    for key in record:
        print(key)

    name と price の 2 行が出ます。値がほしければ record[key] と書いて取りに行くことになり、1 周ごとに二度手間です。

    items() を付けると、キーと値が組で取れます。for の変数を 2 つ書くのがポイントです。

    Python

    for key, value in record.items():
        print(key, value)

    1 周目は key が "name" で value が "りんご"、2 周目は "price" と 120 になります。enumerate や zip と同じ、変数を 2 つ並べて受け取る書き方です。

    items() を付けずに for key, value in record と書くと ValueError になります。1 周で 1 つしか返ってこないものを、2 つに分けようとするからです。

    なお、辞書は 入れた順 を保ちます。作ったときの並びのまま取り出せるので、同じ辞書からは毎回同じ順の結果が得られます。

    行の終わりに、余計な改行が残る

    取り出した組を 1 行ずつの文字列にまとめるとき、ループの中で + "\n" を足していくと、最後の行にも改行が付いてしまいます。行数と改行の数が 1 つずれる、定番のつまずきです。

    join を使えば起きません。要素と要素の あいだ にだけ区切りを挟むからです。

    Python

    print("\n".join(["1 行目", "2 行目"]))

    2 行が出て、末尾に空行は付きません。要素が 1 つなら区切りは入らず、空のリストを渡すと空文字 "" が返ります。

    書く順番に注意します。"区切り".join(リスト) で、つなぐ側が主語です。リスト.join("\n") は逆でエラーになります。

    行の中身は f-string で組み立てるのが楽です。+ でつなぐと "name" + " = " + 120 のところで TypeError になりますが、f-string の中なら int も自動で文字列として埋め込まれるので str() は要りません。

    やってみよう

    関数 record_lines(record) を実装してください。record を items() で走査し、1 組ごとに キー = 値 という 1 行を作り、改行 \n でつないだ文字列を return します。

    = の前後には半角スペースを 1 つずつ入れます。末尾に改行は付けません。空の辞書 {} を渡されたときは空文字 "" を返してください。並びは辞書に入っている順のままにし、並べ替えはしません。

    要件

    1. 関数名は record_lines で、引数は record の1つ
    2. items() でキーと値を同時に取り出して走査する
    3. 1行は「キー = 値」の形で、= の前後に半角スペースを1つずつ入れる
    4. 行の区切りは改行で、末尾には改行を付けない。空の辞書のときは空文字を返す

    ヒント

    for key, value in record.items(): の形で回します

    1行は f"{key} = {value}" で作れます

    行はリストに append しておき、最後に "\n".join(lines) でつなぎます

    join を使えば末尾に余計な改行が付かず、空リストのときは空文字になります

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/05·更新 2026/08/26

    関連レッスン

    • keyでソート

      sorted の key に lambda を渡して、支出を金額の高い順に並べ替える

    • setで重複除去

      set で重複を消し、sorted で並びを固定して使ったカテゴリ一覧を作る

    • リスト内包表記

      for と if を1行に畳むリスト内包表記で、食費の支出だけを抜き出す

    • タプルアンパック

      2つの値の組を変数に分解して受け取り、品名と金額を1行の文字列にまとめる

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 変数データに名前をつけて参照する仕組み
    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • リスト順序付きで複数の値を扱うデータ構造
    • f-stringf"..." で変数を埋め込む文字列記法
    • 関数処理に名前を付けて再利用できる単位
    • 引数位置引数=順番で渡す。
    main.py
    エディタを読み込んでいます

    メモ

    辞書を走査

    ⌘S で保存