Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python ein rekursives Standarddikt auf unendlicher Ebene erstellen?

Wie kann ich in Python ein rekursives Standarddikt auf unendlicher Ebene erstellen?

Susan Sarandon
Susan SarandonOriginal
2024-11-25 17:32:15205Durchsuche

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

Erstellen eines rekursiven defaultdict auf unendlicher Ebene

In Python ist defaultdict ein vielseitiges Tool, das einen Standardwert für fehlende Schlüssel in Wörterbüchern bereitstellt. Ist es jedoch möglich, ein rekursives Standarddikt auf unendlicher Ebene zu erstellen? Dies bedeutet, ein Standarddikt zu erstellen, bei dem der Standardwert auch ein Standarddikt ist, wodurch effektiv verschachtelte Standarddikte erstellt werden.

Anfangs könnte man erwarten, dass x = defaultdict(defaultdict) ein zweistufiges Standarddikt erstellen würde, aber der Zugriff auf x[0 ][0] führt zu einem KeyError. Um eine Rekursion auf unendlicher Ebene zu erreichen, ist ein alternativer Ansatz erforderlich.

Eine Lösung besteht darin, eine Lambda-Funktion als Standardwert zu verwenden:

x = defaultdict(lambda: defaultdict(dict))

Dadurch wird ein Standarddikt erstellt, in dem sich der Standardwert befindet eine Funktion, die ein anderes defaultdict mit einem Wörterbuch als Standardwert zurückgibt. Dies ermöglicht eine Rekursion auf unendlicher Ebene, da beim Zugriff auf x[0][1][0] ein leeres Wörterbuch innerhalb der verschachtelten Standarddiktate erstellt wird.

Im Vergleich zu der in anderen Antworten vorgestellten rekursiven Methode bietet dieser Ansatz mehrere Vorteile :

  • Deplizitheit: Die verschachtelte Struktur ist expliziter, was sie einfacher macht verstehen.
  • Flexibilität: Dadurch kann das „Blatt“ der defaultdict-Struktur etwas anderes als ein Wörterbuch sein. Beispielsweise würde defaultdict(lambda: defaultdict(list)) ein defaultdict mit Listen als Blattwerten erstellen.

Das obige ist der detaillierte Inhalt vonWie kann ich in Python ein rekursives Standarddikt auf unendlicher Ebene 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