Python でリストのキーと空の値を使用して辞書を初期化するにはどうすればよいでしょうか? 質問する

Python でリストのキーと空の値を使用して辞書を初期化するにはどうすればよいでしょうか? 質問する

私はこれを次のように理解したいと思います:

keys = [1,2,3]

これに:

{1: None, 2: None, 3: None}

Python でそれを実行する方法はありますか?

これは醜いやり方です:

>>> keys = [1,2,3]
>>> dict([(1,2)])
{1: 2}
>>> dict(zip(keys, [None]*len(keys)))
{1: None, 2: None, 3: None}

ベストアンサー1

dict.fromkeys問題を直接解決します:

>>> dict.fromkeys([1, 2, 3, 4])
{1: None, 2: None, 3: None, 4: None}

これは実際にはクラスメソッドなので、dict のサブクラス (などcollections.defaultdict) でも機能します。

オプションの 2 番目の引数 (デフォルトは ) はNone、キーに使用する値を指定します。各キーに同じオブジェクトが使用されるため、変更可能な値で問題が発生する可能性があることに注意してください。

>>> x = dict.fromkeys([1, 2, 3, 4], [])
>>> x[1].append('test')
>>> x
{1: ['test'], 2: ['test'], 3: ['test'], 4: ['test']}

これが受け入れられない場合は、値が異なる空のリストである辞書を初期化するにはどうすればよいですか?回避策については。

おすすめ記事