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

Pythonで値なし(None)の辞書をリストから作成する3つの方法

Pythonでは、リストの各要素をキーとし、対応するNone(プレースホルダー)とした辞書を作成したい場面があります。例えば、あとから値を順番に埋めていくための「空の辞書」を用意しておきたいときなどに便利です。この記事では、代表的な3つの方法をコード例とともに紹介します。

方法1:dict.fromkeys() を使う

dict() はPythonで辞書を生成するための組み込みコンストラクタです。中でも fromkeys() メソッドを使うと、キーのシーケンスと共通のデフォルト値から簡単に辞書を作成できます。値を省略した場合は、すべてのキーに None が自動的に設定されます。

サンプルコード

listA = ["Mon", "Tue", "Wed", "Thu", "Fri"]
print("元のリスト:", listA)

# fromkeys() で辞書を作成(値はすべて None)
res = dict.fromkeys(listA)

print("変換後の辞書:", res)

実行結果

上記のコードを実行すると、次の出力が得られます。

元のリスト: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
変換後の辞書: {'Mon': None, 'Tue': None, 'Wed': None, 'Thu': None, 'Fri': None}

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

zip() 関数と dict() コンストラクタを組み合わせる方法もあります。[None] * len(listA) で元のリストと同じ長さの None のリストを作り、それを値側として渡すことで、各要素がキーと値のペアへと変換されます。

サンプルコード

listA = ["Mon", "Tue", "Wed", "Thu", "Fri"]
print("元のリスト:", listA)

# zip() でキーと値(None)をペアにして辞書化
res = dict(zip(listA, [None] * len(listA)))

print("変換後の辞書:", res)

実行結果

上記のコードを実行すると、次の出力が得られます。

元のリスト: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
変換後の辞書: {'Mon': None, 'Tue': None, 'Wed': None, 'Thu': None, 'Fri': None}

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

辞書内包表記を使えば、リストの各要素を走査しながら、キーごとに値として None を割り当てた辞書を1行で作成できます。簡潔で可読性が高く、Pythonらしい書き方です。

サンプルコード

listA = ["Mon", "Tue", "Wed", "Thu", "Fri"]
print("元のリスト:", listA)

# 辞書内包表記で各キーに None を設定
res = {key: None for key in listA}

print("変換後の辞書:", res)

実行結果

上記のコードを実行すると、次の出力が得られます。

元のリスト: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
変換後の辞書: {'Mon': None, 'Tue': None, 'Wed': None, 'Thu': None, 'Fri': None}

まとめ

どの方法でも同じ結果が得られますが、用途に応じて使い分けるのがおすすめです。

  • dict.fromkeys():最もシンプルで意図が明確。第2引数でデフォルト値も指定可能(例:dict.fromkeys(listA, 0))。
  • zip() + dict():キーと値を別々のリストから作りたい場合に応用しやすい。
  • 辞書内包表記:条件分岐や値の変換処理を加えたい場合に柔軟に対応できる。
  1. キーと値のリストからPython辞書(dict)を作成する方法

    キーリストと値リストから辞書を作成する Pythonでは、キーを格納したリスト(L1)と、それに対応する値を格納したリスト(L2)が別々に用意されている場合でも、いくつかの簡単な方法で1つの辞書オブジェクトにまとめることができます。 ここでは、代表的な2つの方法を紹介します。 方法1:zip()関数とdict()関数を組み合わせる 最もシンプルで一般的なのが、zip()で2つのリストをペア化し、dict()関数で辞書に変換する方法です。 >>> L1 = [a,b,c,d] >>> L2 = [1,2,3,4] >>> d = dict(

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

    Pythonでは、2つのリスト(キーと値)を組み合わせて辞書を作成したい場面がよくあります。この記事では、組み込み関数 zip() と dict()、さらにPython 3.xで利用できる辞書内包表記を使った2つの方法をわかりやすく解説します。 方法1:dict()とzip()を組み合わせる zip() はPythonの組み込み関数で、複数のリストから同じインデックス位置にある要素を取り出し、タプルのペア(イテレータ)として返します。一方のリストをキー、もう一方を値とすれば、このzipオブジェクトを組み込み関数 dict() に渡すだけで、簡単に辞書オブジェクトを構築できます。 >&