Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lassen sich alle Werte, die einem bestimmten Schlüssel in verschachtelten Datenstrukturen zugeordnet sind, effizient extrahieren?

Wie lassen sich alle Werte, die einem bestimmten Schlüssel in verschachtelten Datenstrukturen zugeordnet sind, effizient extrahieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-10 10:51:03694Durchsuche

How to Efficiently Extract All Values Associated with a Specific Key in Nested Data Structures?

Alle Vorkommen eines Schlüssels in verschachtelten Datenstrukturen finden

Ziel:
Alle damit verbundenen Werte abrufen ein bestimmter Schlüssel innerhalb verschachtelter Wörterbücher und Listen.

Problem Aussage:
Stellen Sie sich eine komplexe Datenstruktur wie dieses Wörterbuch vor:

{
    "id": "abcde",
    "key1": "blah",
    "key2": "blah blah",
    "nestedlist": [
        {
            "id": "qwerty",
            "nestednestedlist": [
                {
                    "id": "xyz",
                    "keyA": "blah blah blah"
                },
                {
                    "id": "fghi",
                    "keyZ": "blah blah blah"
                }
            ],
            "anothernestednestedlist": [
                {
                    "id": "asdf",
                    "keyQ": "blah blah"
                },
                {
                    "id": "yuiop",
                    "keyW": "blah"
                }
            ]
        }
    ]
}

Das Ziel besteht darin, alle mit dem „id“-Schlüssel verknüpften Werte zu extrahieren.

Lösung:
Um die „id“-Werte aus dieser komplexen Struktur zu durchqueren und zu extrahieren, können mehrere Ansätze verwendet werden. Zu den häufig verwendeten Techniken gehören:

  • Rekursive Generatorfunktion: Diese Methode verwendet eine Generatorfunktion, um die Datenstruktur rekursiv zu durchlaufen, nach dem „id“-Schlüssel zu suchen und den zu ermitteln entsprechende Werte.
  • Depth-First Search (DFS) mit einem Stack:Ein DFS-Ansatz kann sein implementiert, indem ein Stapel verwendet wird, um Elemente auf einen Stapel zu verschieben, sie in der Reihenfolge „First-In-Last-Out“ aufzurufen und bei jedem Schritt nach dem „id“-Schlüssel zu suchen.
  • Depth-First Search (DFS ) mit Rekursion: Ähnlich wie bei der Verwendung eines Stapels kann die Rekursion für einen DFS-Durchlauf verwendet werden, wobei sich die Funktion rekursiv aufruft, um Zweige der Datenstruktur zu erkunden und nach der „ID“ zu suchen. Schlüssel.

Leistungsvergleich:
Um den effizientesten Ansatz zu ermitteln, wurden die genannten Techniken an komplexen Datenstrukturen mit 100.000 Iterationen getestet. Die Leistungsergebnisse zeigten Folgendes:

  • am schnellsten und sichersten: gen_dict_extract
  • am langsamsten und fehleranfälligsten: find_all_items
  • Mittelklasse-Leistung: findkeys, get_recursively, find, dict_extract

Fazit:
Zum Durchlaufen komplexer Datenstrukturen und zum Extrahieren von Werten, die einem bestimmten Schlüssel zugeordnet sind, bietet der Einsatz einer rekursiven Generatorfunktion wie gen_dict_extract optimale Effizienz und Zuverlässigkeit.

Das obige ist der detaillierte Inhalt vonWie lassen sich alle Werte, die einem bestimmten Schlüssel in verschachtelten Datenstrukturen zugeordnet sind, effizient extrahieren?. 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