JavaScriptを有効にしてください

Pythonの辞書内包表記

 ·   2 min read

はじめに

Pythonの辞書内包表記を使って、辞書(dict)型の変数を簡潔に作成する例を示す。
Pythonにはリスト型の処理を簡潔に書けるリスト内包表記があるが、辞書型にも同様の内包表記がある。リスト内包表記と合わせて、作成例を示す。

環境: Python 3.5以降

リスト内包表記

参考までに、リスト内包表記の例を示す。0から9までの数字を2倍にしたリストを得る。

1
2
doubles = [x*2 for x in range(10)]
print(doubles)

実行結果

1
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

辞書内包表記

次に、辞書内包表記の例を示す。0から9までの数字をキー、各キーを2倍にしたものを値とした辞書を得る。

1
2
doubles_dict = {x: x*2 for x in range(10)}
print(doubles_dict)

実行結果

1
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}

上記の例のように、リスト内包表記の[...]{...}として、コロン:を使ってキーと値を指定すると、辞書内包表記となる。

辞書内包表記のif

辞書内包表記で、ある条件を満たす変数のみ抽出する場合は、in節の後ろにif節を設ける。

:0から9までの偶数をキー、各キーを2倍にしたものを値とした辞書を得る。

1
2
doubles_dict2 = {x: x*2 for x in range(10) if x%2==0}
print(doubles_dict2)

実行結果

1
{0: 0, 2: 4, 4: 8, 6: 12, 8: 16}

辞書内包表記のif~else

辞書内包表記で、条件によって処理を分岐させる場合は、for節の前に、以下のようにif~else節を設ける。

(条件がTrueのときの値) if (条件) else (条件がFalseのときの値)

:0から9までの整数をキーとし、キーが偶数の場合は2倍、キーが奇数の場合は3倍にしたものを値とした辞書を得る。

1
2
doubles_dict3 = {x: x*2 if x%2==0 else x*3  for x in range(10)}
print(doubles_dict3)

実行結果

1
{0: 0, 1: 3, 2: 4, 3: 9, 4: 8, 5: 15, 6: 12, 7: 21, 8: 16, 9: 27}

参考

5. データ構造 — Python 3.9.0 ドキュメント

辞書内包表記を使うと、PandasのSeries, DataFrameを簡潔に作成することができます。

辞書内包表記でPandasのSeries, DataFrameを作成

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。Twitterで新着記事を配信中です