ホームページ >バックエンド開発 >Python チュートリアル >Python で無限レベルの再帰的defaultdictを作成するにはどうすればよいですか?

Python で無限レベルの再帰的defaultdictを作成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-25 17:32:15144ブラウズ

How Can I Create an Infinite-Level Recursive defaultdict in Python?

無限レベルの再帰的defaultdictの作成

Pythonのdefaultdictは、辞書内で欠落しているキーのデフォルト値を提供する多用途ツールです。しかし、無限レベルの再帰的なdefaultdictを作成することは可能でしょうか?これは、デフォルト値もdefaultdictであるdefaultdictを作成することを意味し、実質的にネストされたdefaultdictを作成します。

最初は、x =defaultdict(defaultdict)が2レベルのdefaultdictを作成すると予想するかもしれませんが、x[0にアクセスします][0] は KeyError になります。無限レベルの再帰を実現するには、別のアプローチが必要です。

1 つの解決策は、デフォルト値としてラムダ関数を使用することです。

x = defaultdict(lambda: defaultdict(dict))

これにより、デフォルト値がデフォルト値として辞書を含む別のdefaultdictを返す関数。これにより、x[0][1][0] にアクセスするとネストされたdefaultdicts内に空の辞書が作成されるため、無限レベルの再帰が可能になります。

他の回答で提示された再帰的方法と比較して、このアプローチにはいくつかの利点があります。 :

  • 明示性: 入れ子構造がより明示的になり、簡単になります。
  • 柔軟性: これにより、defaultdict 構造体の「リーフ」を辞書以外のものにすることができます。たとえば、defaultdict(lambda:defaultdict(list)) は、リストをリーフ値として持つdefaultdictを作成します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。