1. ホーム
  2. python

[解決済み] Pythonで空リストの辞書を初期化するには?

2022-12-03 04:48:38

質問

プログラムでリストの辞書を作成しようとしましたが、辞書のキーに個別に対応することができません。リストの辞書を作成し、1 つのキーに追加しようとすると、常にすべてのリストが更新されます。以下は、非常に単純なテスト ケースです。

data = {}
data = data.fromkeys(range(2),[])
data[1].append('hello')
print data

実際の結果 {0: ['hello'], 1: ['hello']}

期待される結果 {0: [], 1: ['hello']}

以下がその例です。

data = {0:[],1:[]}
data[1].append('hello')
print data

実際の結果と期待される結果 {0: [], 1: ['hello']}

なぜ fromkeys メソッドが期待通りに動作しないのでしょうか?

どのように解決するのですか?

パス [] を第二引数として dict.fromkeys() はかなり無駄な結果をもたらします - 辞書内のすべての値は と同じになります。 リストオブジェクトになります。

Python 2.7以上では、代わりにdicitonary comprehensionを使用することができます。

data = {k: [] for k in range(2)}

以前のバージョンのPythonでは

data = dict((k, []) for k in range(2))