Python での空のリストによる辞書の初期化
Python では、さまざまな方法で空のリストの辞書を作成できます。ただし、fromkeys メソッドは、すべての辞書キーによって参照される単一のリスト オブジェクトを作成するため、望ましい結果を生成しない可能性があります。
次の例を考えてみましょう:
data = {} data = data.fromkeys(range(2), []) data[1].append('hello') print(data)
期待される結果: {0: [], 1: ['hello']}
実際の結果: {0: ['hello'], 1: ['hello']}
原因:
fromkeys を使用する場合、2 番目の引数 ([]) は単一のリスト オブジェクトとして扱われ、すべてのユーザーが参照します。結果の辞書内のキー。任意のキーに対する変更は、他のすべてのキーに反映されます。
解決策:
独立した空のリストの辞書を作成するには、辞書内包表記を使用します:
Python 2.7 以降:
data = {k: [] for k in range(2)}
Python バージョンの場合2.7 より前:
data = dict([(k, []) for k in range(2)])
代わりに、Python 2.4 ~ 2.6 ではジェネレータ式を使用します:
data = dict((k, []) for k in range(2))
これらのアプローチにより、ディクショナリ内の各キーが個別の空のリスト オブジェクトを参照することが保証されます。 、ディクショナリ値の独立した変更とアドレス指定が可能になります。
以上がPython で空のリストを含む辞書を適切に初期化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。