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