ホームページ  >  記事  >  バックエンド開発  >  Python で無限にネストされたdefaultdictを作成するには?

Python で無限にネストされたdefaultdictを作成するには?

DDD
DDDオリジナル
2024-11-26 07:43:09197ブラウズ

How to Create an Infinitely-Nested defaultdict in Python?

無限レベルの再帰的defaultdictを作成する方法

Pythonのdefaultdictは、ネストされた辞書の作成に使用できる多用途のデータ構造です。ただし、デフォルトでは、defaultdict は単一レベルのネストのみを提供します。内部のdefaultdictのデフォルトファクトリとして動作し、無限レベルの再帰構造を効果的に作成するdefaultdictを作成する方法はありますか?

元の質問は次の動作を実現しようとしました:

x = defaultdict(...stuff...)
x[0][1][0]
# Should return an empty dictionary {}

ネイティブのdefaultdict引数のみを使用して、無限にネストされた再帰的defaultdictを作成することはできません。一般的な回避策は、ラムダ関数を利用することです。

x = defaultdict(lambda: defaultdict(dict))

このアプローチでは、欠落しているキーにアクセスするときに新しいdefaultdictを生成するdefaultdictが作成されます。これにより、実質的に無限レベルのネストが提供されます。

ラムダベースのアプローチの利点:

  • 明示的で理解しやすい: 構文が明確望ましい動作を定義し、他の開発者が簡単に動作できるようにします。 comprehend.
  • 柔軟なデータ型: ラムダ関数を変更することで、defaultdict の「リーフ」をリスト、セット、またはその他のデータ構造にカスタマイズできます。

注:

ラムダを使用した無限にネストされた defaultdict には次の特性があります:

  • 欠落しているキーにアクセスすると、指定されたデータ型 (この場合は、defaultdict(dict)) の新しいインスタンスが常に返されます。
  • ネストの深さは、技術的には利用可能なメモリと使用される特定のデータ構造によって制限されます (この場合、 defaultdict(dict)).

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

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