Collections.defaultdict と通常の辞書: 違いを理解する
キーが欠落している場合に KeyError を発生させる従来の Python 辞書とは異なり、defaultdict は次の機能を備えています。ユニークなひねり。存在しないキーは、ユーザー定義の「呼び出し可能」オブジェクトによって決定されるデフォルト値で自動的に初期化されます。その機能を完全に理解するために、その構文と仕組みを詳しく調べてみましょう。
質問で提供されている最初の例では、
>>> from collections import defaultdict >>> s = 'mississippi' >>> d = defaultdict(int) >>> for k in s: ... d[k] += 1 ... >>> d.items() dict_items([('m', 1), ('i', 4), ('s', 4), ('p', 2)])
defaultdict を使用し、呼び出し可能なオブジェクトとして int を指定します。文字列 s を反復処理すると、defaultdict は int() を呼び出して不足しているキーを自動的に作成します。この関数は、0 に初期化された整数オブジェクトを返します。その結果、s のすべての文字が結果の辞書 d のキーになり、対応する値が出現頻度となります。
2 番目の例:
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)] >>> d = defaultdict(list) >>> for k, v in s: ... d[k].append(v) ... >>> d.items() [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
defaultdict を再度使用し、呼び出し可能なオブジェクトとしてリストを渡します。今回は、存在しないキーは list() を使用して初期化されます。タプルのリストを反復処理すると、defaultdict によって、それぞれの一意の色がキーとして表現されることが保証されます。対応する値は、各色の出現頻度を格納するリストです。
defaultdict を利用すると、キーが欠落している辞書を簡単に操作でき、潜在的な KeyError 例外を回避し、コードを簡素化できます。
以上がPython の `defaultdict` と通常の `dict`: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。