Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでzip()と内包表記を使ってリストから辞書を作成する方法

Pythonでは、2つのリスト(キーと値)を組み合わせて辞書を作成したい場面がよくあります。この記事では、組み込み関数 zip()dict()、さらにPython 3.xで利用できる辞書内包表記を使った2つの方法をわかりやすく解説します。

方法1:dict()とzip()を組み合わせる

zip() はPythonの組み込み関数で、複数のリストから同じインデックス位置にある要素を取り出し、タプルのペア(イテレータ)として返します。一方のリストをキー、もう一方を値とすれば、このzipオブジェクトを組み込み関数 dict() に渡すだけで、簡単に辞書オブジェクトを構築できます。

>>> L1=['a','b','c','d']
>>> L2=[1,2,3,4]
>>> d1=dict(zip(L1,L2))
>>> d1
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

この方法はコードが短く直感的なので、単純にキーと値の対応関係を作りたい場合に最適です。

方法2:辞書内包表記を使う

Python 3.xでは、リスト内包表記と同じ考え方で書ける「辞書内包表記」の構文が利用できます。zipオブジェクトをループしながら、キーと値のペアを直接指定して辞書を構築します。

>>> L1=['a','b','c','d']
>>> L2=[1,2,3,4]
>>> d={k:v for (k,v) in zip(L1,L2)}
>>> d
{'a': 1, 'b': 2, 'c': 3, 'd': 4}

どちらの方法を選ぶべきか?

両者の結果はまったく同じですが、使い分けの目安があります。

  • dict(zip(L1, L2)):シンプルで読みやすく、変換処理が不要な場合に便利。
  • 辞書内包表記:キーや値に対して加工・フィルタリングを行いたい場合に柔軟に対応できる。例えば {k: v*10 for k, v in zip(L1, L2)} のように、値を変換しながら辞書を作成できます。

なお、zip() は最も短いリストの長さに合わせて動作するため、キーと値のリストの要素数が異なる場合は、余分な要素が無視される点に注意してください。

  1. Pythonでタプルから辞書を作成する方法:zip()とdict()の使い方を解説

    はじめに Pythonでは、キー用と値用の2つのタプルを組み合わせて、簡単に辞書(dict)オブジェクトを作成できます。代表的な方法は次の2つです。 zip()関数とdict()関数を組み合わせる方法 辞書内包表記(ディクショナリ・コンプリヘンション)を使う方法 方法1:zip()関数とdict()関数を使う zip()関数は、2つのタプルから対応する要素同士をペアにしたイテラブル(反復可能オブジェクト)を生成します。この結果をdict()関数に渡すことで、辞書オブジェクトが完成します。 >>> T1 = (a, b, c, d) >>> T2 = (

  2. Pythonでネストされた辞書(入れ子のdict)を作成する方法

    Pythonの辞書(dict)オブジェクトはミュータブル(変更可能)です。この特性を利用すると、ある辞書の「値」として、別の辞書オブジェクトをそのまま格納することができます。このように、キーに対応する値としてさらに辞書が定義されている構造を、ネストされた辞書(入れ子構造の辞書)と呼びます。ネストされた辞書の基本構文ネストされた辞書は、外側のキーに対して、波括弧 {} で囲まれた新しい辞書を値として指定するだけで作成できます。>>> students={"student1":{"name":"Raaj", "