Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python ein unendlich verschachteltes Standarddikt erstellen?

Wie kann ich in Python ein unendlich verschachteltes Standarddikt erstellen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-24 04:35:11620Durchsuche

How Can I Create an Infinitely Nested defaultdict in Python?

Infinite-Level Nested Defaultdicts

Frage

Wie kann man ein unendlich verschachteltes Defaultdict erstellen? Mit anderen Worten: Ist es möglich, den Standardwert eines defaultdict auf ein anderes defaultdict festzulegen? Dies würde verschachtelte Strukturen beliebiger Tiefe ermöglichen, die bei Bedarf automatisch die erforderlichen Wörterbücher erstellen.

Betrachten Sie beispielsweise den folgenden Code:

x = defaultdict(...stuff...)
x[0][1][0]
{}

In diesem Szenario würde x[0] gelten ein Standarddikt sein, x[0][1] wäre ein anderes Standarddikt und x[0][1][0] wäre ein Standard Wörterbuch.

Antwort

Es ist zwar möglich, ein Defaultdict zu erstellen, das andere Defaultdicts enthält, es wird jedoch nicht direkt von den Standard-Defaultdict-Argumenten unterstützt. Es gibt jedoch eine einfache Problemumgehung, die mehrstufige verschachtelte Defaultdicts ermöglicht.

Anstatt den Standardwert als ein weiteres Defaultdict zu definieren, definieren Sie den Standardwert als Lambda-Funktion, die ein Defaultdict zurückgibt:

x = defaultdict(lambda: defaultdict(dict))

Dieser Code erstellt ein zweistufiges Standarddikt, wobei x[0] ein Standarddikt und x[0][1] ein weiteres Standarddikt ist, mit Werten von Wörterbücher.

Für eine Verschachtelung auf unendlicher Ebene fügen Sie einfach zusätzliche Ebenen zur Lambda-Funktion hinzu:

x = defaultdict(lambda: defaultdict(lambda: defaultdict(...)))

Diese Problemumgehung ermöglicht die Erstellung beliebig verschachtelter Defaultdicts und bietet so eine bequeme Möglichkeit, komplexe Daten zu verwalten Strukturen mit automatischer Wertschöpfung.

Das obige ist der detaillierte Inhalt vonWie kann ich in Python ein unendlich verschachteltes Standarddikt erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn