Python で 2つのリストを辞書に変換する

Rayven Esplanada 2023年1月30日
  1. Python で 2つのリストを辞書に変換するには zip()dict() を使用する
  2. Python でリストを辞書に変換するために辞書内包表記を使用する
  3. Python でリストを辞書に変換するために for ループを使用する
Python で 2つのリストを辞書に変換する

このチュートリアルでは、Python で 2つのリストを辞書に変換し、一方のリストには辞書のキーを、もう一方のリストには値を格納する方法を紹介します。

Python で 2つのリストを辞書に変換するには zip()dict() を使用する

Python には zip() という組み込み関数があり、反復可能なデータ型をタプルに集約して呼び出し元に返します。関数 dict() は与えられたコレクションから辞書を生成します。

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = dict(zip(key_list, value_list))
print(dict_from_list)

この解決策では、1 行と 2つの関数を使用するだけでリストを辞書に変換することができます。

出力:

{'name': 'Johnny', 'age': '27', 'address': 'New York'}

Python でリストを辞書に変換するために辞書内包表記を使用する

辞書内包表記とは、Python で辞書を作成する際の初期化時間を短縮する方法です。内包表記は、複数行と変数を必要とする for ループの代わりになります。Comprehension は 1 行で初期化の作業を行います。

この解決策では、関数 zip() は辞書内包に値を提供します。内包は、関数 zip() の戻り値の中の連続する各要素のキーと値のペアを辞書として返します。

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {k: v for k, v in zip(key_list, value_list)}
print(dict_from_list)

リストを辞書に変換するもう一つの方法は、リストのインデックスを利用して、range() 関数を用いて両方のリストを繰り返し処理し、そのリストから辞書を構築するために内包表記を利用することです。

これは、キーリストと値リストの長さが同じであることを前提としています。この例では、キーリストの長さが範囲の基礎となります。

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {key_list[i]: value_list[i] for i in range(len(key_list))}
print(dict_from_list)

これらの包括的な解決策はどちらも、前の例と同じ出力を提供します。

これら 2つのソリューションの唯一の違いは、一方はリストをタプルに変換するために zip() 関数を使用することです。もう一つは、range() 関数を用いて、現在のインデックスを用いて両方のリストを繰り返し処理して辞書を形成することです。

出力:

{'name': 'Johnny', 'age': '27', 'address': 'New York'}

Python でリストを辞書に変換するために for ループを使用する

リストから辞書への変換を実現する最も簡単な方法は、ループすることです。この方法は最も効率が悪く、時間がかかりますが、特に初心者で、基本的なプログラミングの構文をもっと理解したい場合には、良いスタートとなります。

ループする前に、空の辞書を初期化します。外側のループはキーリストを反復処理し、内側のループは値リストを反復処理します。

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {}
for key in key_list:
    for value in value_list:
        dict_from_list[key] = value
        value_list.remove(value)
        break

print(dict_from_list)

キーと値のペアが形成されるたびに、次のキーに次の値が割り当てられるように、リストから値の要素を削除します。除去後、次のキーに進むために内ループを解除します。

ループを利用するもう一つの解決策は、辞書内包の例で行ったのと同様に、インデックスを利用してキーと値のペアを取得するために range() を利用することです。

key_list = ["name", "age", "address"]
value_list = ["Johnny", "27", "New York"]

dict_from_list = {}
for i in range(len(key_list)):
    dict_from_list[key_list[i]] = value_list[i]

print(dict_from_list)

どちらの解決策も同じ出力を生成します。

{"name": "Johnny", "age": "27", "address": "New York"}

要約すると、2つのリストを辞書に変換する最も効率的な方法は、組み込み関数 zip() を用いて 2つのリストをタプルに変換し、そのタプルを dict() を用いて辞書に変換することです。

辞書内包を用いてリストを辞書に変換するには、zip() を用いてリストをタプルに変換するか、range() を用いてリストのインデックスを用いて辞書を反復して初期化するかのいずれかを使用します。

これら 2つの解決策は、プレーンループを用いてリストを辞書に変換するナイーブな解決策よりも優れた解決策です。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python List

関連記事 - Python Dictionary