Website-Suche

Python – Holen Sie sich bestimmte Elemente auf verschachtelter Ebene aus dem Wörterbuch


Wörterbücher in Python ermöglichen das Speichern von Schlüssel-Wert-Paaren und erleichtern so die effiziente Organisation und den effizienten Zugriff auf Daten. Manchmal müssen wir möglicherweise bestimmte Elemente aus verschachtelten Ebenen innerhalb eines Wörterbuchs abrufen. Wir können isinstance() mit der Rekursionsmethode und der Methode dict.get() verwenden, um die Elemente auf verschachtelter Ebene aus dem Wörterbuch abzurufen. In diesem Artikel werden wir verschiedene Möglichkeiten untersuchen, um bestimmte Elemente auf verschachtelter Ebene aus dem Wörterbuch in Python abzurufen.

Verschachteltes Wörterbuch

Ein verschachteltes Wörterbuch ist ein Wörterbuch, das andere Wörterbücher als Werte enthält. Dies ermöglicht die Erstellung hierarchischer Strukturen, in denen Daten baumartig organisiert sind. Jede Ebene der Hierarchie stellt ein Schlüssel-Wert-Paar dar, wobei der Wert ein weiteres Wörterbuch ist. Der Zugriff auf Elemente aus einer solchen Struktur erfordert einen speziellen Ansatz für die Navigation durch die Ebenen des Baums.

Methode 1: Rekursion verwenden

Mithilfe der rekursiven Methode können wir problemlos Elemente aus verschachtelten Ebenen innerhalb eines Wörterbuchs abrufen, ohne jede Ebene explizit anzugeben. Insbesondere beim Umgang mit komplexen Datenstrukturen bietet es eine flexible und effiziente Lösung.

Algorithmus

  • Definieren Sie eine Funktion, nennen wir sie get_nested_item, die zwei Argumente benötigt: die Wörterbuchdaten und eine Liste von Schlüsseln, die die verschachtelten Ebenen darstellen.

  • Überprüfen Sie, ob die Schlüsselliste leer ist. Wenn dies der Fall ist, geben Sie die Daten so zurück, wie sie den Wert auf der gewünschten Verschachtelungsebene darstellen.

  • Andernfalls holen Sie sich den ersten Schlüssel aus der Schlüsselliste

  • Überprüfen Sie, ob der Schlüssel im Datenwörterbuch vorhanden ist. Wenn dies der Fall ist, rufen Sie rekursiv die Funktion get_nested_item mit dem dem Schlüssel entsprechenden Wert als neuem Datenargument und den verbleibenden Schlüsseln in der Schlüsselliste auf.

  • Wenn der Schlüssel nicht vorhanden ist, geben Sie None oder einen Standardwert zurück, um anzugeben, dass das Element nicht gefunden wurde.

Beispiel

Im folgenden Beispiel definieren wir die Funktion get_nested_item, die das Datenwörterbuch und eine Liste von Schlüsseln als Argumente verwendet. Wir prüfen, ob die Schlüsselliste leer ist; Wenn ja, geben wir den Datenwert zurück. Andernfalls rufen wir den ersten Schlüssel aus der Schlüsselliste ab und prüfen, ob er im Datenwörterbuch vorhanden ist. Wenn dies der Fall ist, rufen wir rekursiv die Funktion get_nested_item mit dem entsprechenden Wert als neuen Daten und den verbleibenden Schlüsseln in der Schlüsselliste auf. Wenn der Schlüssel nicht gefunden wird, geben wir None zurück.

def get_nested_item(data, keys):
    if len(keys) == 0:
        return data

    key = keys[0]
    if key in data:
        return get_nested_item(data[key], keys[1:])
    else:
        return None

keys = ['employees', 'John', 'position']
position = get_nested_item(company_data, keys)
print(position)

Ausgabe

Manager

Methode 2: Verwendung von isinstance() zusammen mit Rekursion

Die Funktion isinstance() in Python wird verwendet, um den Typ eines Objekts zu überprüfen. Es gibt True zurück, wenn das Objekt eine Instanz des angegebenen Typs ist, andernfalls False. Wir können diese Funktion zusammen mit der Rekursion verwenden, um dynamisch durch die Ebenen verschachtelter Wörterbücher zu navigieren.

Algorithmus

  • Definieren Sie eine Funktion, nennen wir sie get_nested_item, die zwei Argumente benötigt: die Wörterbuchdaten und eine Liste von Schlüsseln, die die verschachtelten Ebenen darstellen.

  • Überprüfen Sie, ob die Schlüsselliste leer ist. Wenn dies der Fall ist, geben Sie die Daten so zurück, wie sie den Wert auf der gewünschten Verschachtelungsebene darstellen.

  • Andernfalls holen Sie sich den ersten Schlüssel aus der Schlüsselliste.

  • Überprüfen Sie mithilfe von isinstance(data, dict), ob es sich bei den Daten um ein Wörterbuch handelt. Wenn dies der Fall ist, rufen Sie rekursiv die Funktion get_nested_item mit dem dem Schlüssel entsprechenden Wert als neuem Datenargument und den verbleibenden Schlüsseln in der Schlüsselliste auf.

  • Wenn es sich bei den Daten nicht um ein Wörterbuch handelt oder der Schlüssel nicht vorhanden ist, geben Sie „None“ oder einen Standardwert zurück, um anzugeben, dass das Element nicht gefunden wurde.

Beispiel

Im folgenden Beispiel verwenden wir ,isinstance(data, dict), um zu prüfen, ob es sich bei den Daten um ein Wörterbuch handelt. Wenn dies der Fall ist, fahren wir mit dem rekursiven Aufruf von get_nested_item fort. Diese Prüfung stellt sicher, dass wir durch gültige Wörterbuchebenen navigieren und Fehler beim Zugriff auf nicht vorhandene Schlüssel vermeiden.

def get_nested_item(data, keys):
    if len(keys) == 0:
        return data

    key = keys[0]
    if isinstance(data, dict) and key in data:
        return get_nested_item(data[key], keys[1:])
    else:
        return None

keys = ['employees', 'John', 'position']
position = get_nested_item(company_data, keys)
print(position)

Ausgabe

Manager

Methode 3: Verwendung der Methode dict.get()

Die Methode dict.get() ist eine nützliche Möglichkeit, einen Wert aus einem Wörterbuch abzurufen und einen Standardwert bereitzustellen, wenn der Schlüssel nicht gefunden wird. Im Vergleich zur direkten Wörterbuchindizierung ist dies ein prägnanterer und sichererer Ansatz, insbesondere wenn es sich um verschachtelte Wörterbücher handelt oder wenn die Existenz eines Schlüssels nicht bekannt ist.

Beispiel

Im folgenden Beispiel haben wir ein verschachteltes Wörterbuch company_data, das Mitarbeiterinformationen darstellt. Wir verwenden company_data.get('employees', {}).get('John', {}).get('position', 'Unknown'), um die Position des Mitarbeiters 'John' abzurufen. . Durch die Verwendung von dict.get() auf jeder Ebene stellen wir sicher, dass der Code problemlos mit fehlenden Schlüsseln umgeht, ohne einen Fehler auszulösen. Falls ein Schlüssel fehlt, wird der Standardwert „Unbekannt“ zurückgegeben.

company_data = {
    'employees': {
        'John': {
            'age': 30,
            'position': 'Manager',
            'department': 'Sales'
        },
        'Emily': {
            'age': 25,
            'position': 'Developer',
            'department': 'IT'
        }
    }
}
position = company_data.get('employees', {}).get('John', {}).get('position', 'Unknown')
print(position)

Ausgabe

Manager

Abschluss

In diesem Artikel haben wir besprochen, wie wir mithilfe der Rekursion, der isinstance und der Rekursionsmethode sowie der Methode dict.get() bestimmte Elemente auf verschachtelter Ebene aus dem Wörterbuch abrufen können. Die Methode dict.get() ist besonders nützlich, wenn Sie sich über das Vorhandensein eines Schlüssels nicht sicher sind oder wenn Sie mit fehlenden Schlüsseln problemlos umgehen möchten. Die Funktion isinstance() und die Rekursion ermöglichen uns eine effiziente Navigation durch verschachtelte Wörterbücher.

Verwandte Artikel: