辞書(dict)

【Python】辞書内包表記の使い方

【Python】辞書内包表記の使い方
naoki-hn

Pythonの辞書内包表記(dictionary comprehension)の使い方について解説します。

辞書内包表記(dictionary comprehension)

Pythonにおける辞書内包表記(dictionary comprehension)は、既存のリストや辞書などのイテラブルなオブジェクトから新たな辞書を作成する際にシンプルに記載するための定義方法です。

この記事では、辞書内包表記の基本的な使い方について紹介します。

辞書内包表記の使い方

辞書内包表記の構文は以下になります。

{キー: 値 for 仮変数 in イテラブルなオブジェクト if 条件}

上記の意味合いとしては、イテラブルなオブジェクトから要素を順番に仮変数に取得し、条件に一致するものを使って、キーと値を持つ辞書を作るということになります。

既存リストから辞書を作成する場合

既存のリストから辞書内包表記を使って辞書を作成する場合は以下のようにします。

# キーと値のそれぞれのリストから辞書を作成する例
keys = ["k1", "k2", "k3", "k4", "k5"]
values = [10, 20, 30, 40, 50]

data = {k: v for k, v in zip(keys, values) if v >= 30}
print(f"data: {data}")
【実行結果】
data: {'k3': 30, 'k4': 40, 'k5': 50}

上記例では、keysvaluesというキーと値のそれぞれのリストが既に用意されている状況で辞書を作成する例です。keysvaluesから順にkvに値を取り出し、値v30以上のものを使って辞書を作成しています。

複数リストからまとめて値を取り出す際にはzipを使用しています。zipについては「zipを用いたfor文の使い方」を参考にしてください。

既存リストから辞書内包表記を使用しないで記載する場合

辞書内包表記は、通常のfor文で書き換えることが可能です。

# キーと値のそれぞれのリストから辞書を作成する例
keys = ["k1", "k2", "k3", "k4", "k5"]
values = [10, 20, 30, 40, 50]

# 内包表記を使わない場合
data = {}
for k, v in zip(keys, values):
    if v >= 30:
        data[k] = v
print(f"data: {data}")

既存の辞書から新しい辞書を作成する場合

既存の辞書から辞書内包表記を使って辞書を作成する場合は以下のようにします。

# 辞書から新しい辞書を作成する例
d = {"k1": 10, "k2": 15, "k3": 20, "k4": 25, "k5": 30}

data = {k: v for k, v in d.items() if v % 2 == 0}
print(f"data: {data}")
【実行結果】
data: {'k1': 10, 'k3': 20, 'k5': 30}

上記例では、既存辞書から順番に値を取り出し、偶数の要素を取り出して新しい辞書を作成しています。itemsメソッドを使用して順にkvに値を取り出し、2で割り切れる要素を使って辞書を作成しています。

辞書のitemsメソッドについては「辞書(dict)の内容を列挙して扱う方法」を参考にしてください。

既存の辞書から辞書内包表記を使用しないで記載する場合

辞書内包表記は、通常のfor文で書き換えることが可能です。

# 辞書から新しい辞書を作成する例
d = {"k1": 10, "k2": 15, "k3": 20, "k4": 25, "k5": 30}

# 内包表記を使わない場合
data = {}
for k, v in d.items():
    if v % 2 == 0:
        data[k] = v
print(f"data: {data}")

辞書内包表記の特徴と注意点

辞書内包表記は、処理をシンプルに記述できる点が特徴です。また、辞書内包表記は、Python内部で最適化されているため、一般的に実行速度も速くなります。処理速度は状況によって異なり、必ずしも常に早いとは限らないため、その点には注意が必要です。

また、辞書内包表記がコードを複雑にする場合には、使用を慎重に検討してください。特にチーム開発では、ソースコードの可読性が重要ですので、シンプルさと可読性のバランスを保つことが重要です。

まとめ

Pythonの辞書内包表記(dictionary comprehension)の使い方について解説しました。

辞書内包表記は、イテラブルなオブジェクトから新たな辞書を作成する際にシンプルに記載するための定義方法です。この記事では、辞書内包表記の基本的な使い方や特徴と注意点を紹介しました。

Pythonにおける内包表記は他にも「リスト内包表記」「集合内包表記」「ジェネレータ内包表記」といったものがあります。内包表記については「内包表記(まとめ)」を参考にしてください。

ソースコード

上記で紹介しているソースコードについては GitHub にて公開しています。参考にしていただければと思います。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました