コース一覧
    Python内包表記・高階関数
    辞書内包表記

    Python内包表記・高階関数

    内包表記と高階関数を学び、データ変換を簡潔かつ意図どおりに表現できるようにします。

    1
    内包表記
    01. リスト内包表記と条件15分
    02. if-else付き内包表記15分
    03. 辞書内包表記15分
    04. set内包表記15分
    05. ジェネレータ式15分
    06. つくる 集計のリファクタ20分
    07. 第3章クイズ10分
    2
    高階関数
    01. 関数はオブジェクト15分
    02. map15分
    03. filter15分
    04. sortedとkeyの応用15分
    05. reduce15分
    06. anyとall15分
    07. つくる 抽出・変換パイプライン20分
    08. 第4章クイズ10分

    辞書内包表記

    このレッスンでできるようになること。辞書内包表記を使って、カテゴリから合計金額への辞書を1行で作れるようになります。

    第2章では defaultdict でカテゴリごとに支出をまとめました。まとめ終わったデータは、カテゴリ名をキー、支出のリストを値とする辞書になっています。

    Python

    grouped = {
        "食費": [{"name": "スーパー", "amount": 3200}, {"name": "コンビニ", "amount": 620}],
        "交通費": [{"name": "電車代", "amount": 480}],
    }

    ここから「カテゴリごとの合計」を出したいとき、これまでは空の辞書を用意して for でまわし、キーごとに合計を代入していました。辞書内包表記を使うと、この形をそのまま1行で書けます。

    Python

    totals = {cat: sum([e["amount"] for e in items]) for cat, items in grouped.items()}

    リスト内包表記との違いは2つあります。角かっこではなく波かっこで囲むこと、そして左側に「キー」と「値」を書くことです。キーと値の区切りには辞書と同じ記号を使います。この2つがそろっているものだけが辞書内包表記で、キーだけを書くと別のものになります。それは次のレッスンで扱います。

    もとが辞書のときは .items() を付けて、キーと値を同時に受け取るのが定番です。キーだけでよければ for cat in grouped と書けますが、値も使う今回のような集計では items を使ったほうが短くなります。

    上の例では、合計を出す部分にリスト内包表記が入れ子で入っています。内包表記の中に内包表記を書けるのが Python の強みですが、3段になると急に読めなくなります。2段までにとどめ、それ以上になりそうなら途中結果を変数に置いてください。

    末尾に if を付けて対象を絞れる点はリストと同じです。たとえば if items と書けば、支出が1件も無いカテゴリを結果から外せます。

    要件

    1. 波かっこを使った辞書内包表記で書くこと
    2. もとの辞書のキーをそのまま結果のキーにすること
    3. 値は そのカテゴリの amount の合計 とすること

    ヒント

    辞書をまわすときは grouped.items() でキーと値を同時に受け取れます

    合計は sum に金額のリストを渡すと出せます

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

    関連レッスン

    • set内包表記

      set 内包表記で、重複のない利用カテゴリ一覧を作ります。

    • ジェネレータ式

      ジェネレータ式で合計を求め、リストを作らずに済ませます。

    • つくる 集計のリファクタ

      既存の集計ループ3つを内包表記に置き換えて、結果が変わらないことを確かめます。

    • 第3章クイズ

      内包表記の読み書きの理解を確認します。

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

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

    • 内包表記for と if を 1 行で書く構文
    • リスト順序付きで複数の値を扱うデータ構造
    • リスト内包表記リストを1行で生成する書き方。
    • 変数データに名前をつけて参照する仕組み
    main.py
    エディタを読み込んでいます

    メモ

    辞書内包表記

    ⌘S で保存