Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonの辞書の作り方

Pythonで2つのリストから1つの辞書を辞書内包表記を使って作る方法

辞書内包表記を使って2つのリストから1つの辞書を作る方法の解説

今回はPythonで任意の2つのリストから1つの辞書を作る方法の解説です。今回のポイントは辞書を内包表記を使って作るという点です。

まず今回出来上がる辞書については次の項目を見てください。

今回作りたいもの

まず次の2つのリストがあったとします。社名のリストと、その各社の代表製品(代表サービス)のリストです。

companies = ["Apple", "Google", "Meta", "Amazon"]
products = ["iPhone", "Search", "SNS", "AWS"]

これらの2つのリストをまとめて、次のような辞書を作ります。

{'Apple': 'iPhone', 'Google': 'Search', 'Meta': 'SNS', 'Amazon': 'AWS'}

もちろんこの程度の長さの辞書ならば手で1つ1つ入力していってもいいでしょうが、リストの要素が100個とかになるとさすがにやってられません。そこで今回は辞書を内包表記を使って作る方法を考えましょう。

コード

# リスト2つ作成
companies = ["Apple", "Google", "Meta", "Amazon"]
products = ["iPhone", "Search", "SNS", "AWS"]

# 辞書内包表記で辞書を作成
business_dict = {key: value for key, value in zip(companies, products)}

# 出来上がった辞書を表示
print(business_dict)

結果は、

{'Apple': 'iPhone', 'Google': 'Search', 'Meta': 'SNS', 'Amazon': 'AWS'}

となります。これで辞書が出来上がりました。

解説

Pythonの内包表記について

さて上のコードで最大のポイントは次の箇所ですね。

# 辞書内包表記で辞書を作成
business_dict = {key: value for key, value in zip(companies, products)}

ここではPythonにおけるとても便利な書き方の1つ、内包表記という書き方を使っています。この書き方については、これら過去記事ですでに説明しているので、読んでみてください。

Pythonのzip関数について

またfor文とともに使っているzip関数についても過去記事で解説しています。イテレータとの関係についても解説していますので読んでみてください。

全体の処理の流れ

# 辞書内包表記で辞書を作成
business_dict = {key: value for key, value in zip(companies, products)}

さてこの内包表記の部分ですが、簡単な処理の流れだけ書いておきます。細かい事項には触れていません。

companies[0]とproducts[0]の2つの要素が1つのタプルにまとめられ、("Apple", "iPhone")というタプルができあがる
↓ 
タプルの2つの要素が順番に、keyとvalueに代入され、 
・key = "Apple" 
・value = "iPhone" 
↓
{”Apple": ”iPhone"}
↓
companies[1]とproducts[1]の2つの要素が1つのタプルにまとめられ、("Apple", "iPhone")というタプルができあがる
↓
中略
↓
{'Apple': 'iPhone', 'Google': 'Search'}
↓
以下同様

という感じです。

なお、使いまわしがしやすいよう関数化させると、次のような感じでしょうか。簡単なエラー(例外)処理もつけてみました。

key_list = ["Apple", "Google", "Meta", "Amazon"]
value_list = ["iPhone", "Search", "SNS", "AWS"]

def make_dict(*lists):
    if len(key_list) != len(value_list):
        raise Exception("キーの個数と値の個数が一致していません")

    new_dict = {key: value for key, value in zip(lists[0], lists[1])}
    return new_dict

make_dict(key_list, value_list)

プログラミングを学びIT業界へ転職するなら現役エンジニアから学べるプログラミングスクールTechAcademy [テックアカデミー]でオンライン講座を受講するのが良いと思います。1人で悩みながら学習を進めるよりもわかりやすく、費やす時間も少なく合理的・効率的に学習できるからです。

など各種の講座が用意されています。無料で体験できるテックアカデミー無料体験も用意されています。

愛を分かち合いましょう