Python で無限にネストされたdefaultdictを作成するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-24 04:35:11
オリジナル
594 人が閲覧しました

How Can I Create an Infinitely Nested defaultdict in Python?

無限レベルでネストされた Defaultdicts

質問

無限にネストされたdefaultdictを作成するにはどうすればよいですか?言い換えれば、defaultdict のデフォルト値を別のdefaultdictに設定することは可能でしょうか?これにより、必要に応じて必要な辞書を自動的に作成する、任意の深さのネスト構造が可能になります。

たとえば、次のコードを考えてみましょう。

x = defaultdict(...stuff...)
x[0][1][0]
{}
ログイン後にコピー

このシナリオでは、x[0] は次のようになります。はdefaultdict、x[0][1]は別のdefaultdict、x[0][1][0]は標準Dictionary.

Answer

他のdefaultdictを含むdefaultdictを作成することは可能ですが、標準のdefaultdict引数では直接サポートされていません。ただし、複数レベルのネストされたdefaultdictを許可する簡単な回避策があります。

デフォルト値を別のdefaultdictとして定義する代わりに、デフォルト値をdefaultdictを返すラムダ関数として定義します:

x = defaultdict(lambda: defaultdict(dict))
ログイン後にコピー

このコードは 2 レベルのdefaultdictを作成します。ここで、x[0]はdefaultdict、x[0][1]は別のdefaultdictで、値は次のとおりです。

無限レベルのネストの場合は、ラムダ関数にレベルを追加するだけです:

x = defaultdict(lambda: defaultdict(lambda: defaultdict(...)))
ログイン後にコピー

この回避策により、任意にネストされたdefaultdictの作成が可能になり、複雑なデータを管理する便利な方法が提供されます。自動価値創造を備えた構造。

以上がPython で無限にネストされたdefaultdictを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート