CodeGym /Kurse /Python SELF DE /Verschachtelte Wörterbücher

Verschachtelte Wörterbücher

Python SELF DE
Level 11 , Lektion 7
Verfügbar

7.1 Erstellen von verschachtelten Wörterbüchern

Verschachtelte Wörterbücher sind eine sehr praktische Methode, um komplexe Datenstrukturen zu beschreiben, mit denen du sehr oft konfrontiert wirst. Lass uns ein wenig damit üben, sie zu erstellen.

Erstellen von verschachtelten Wörterbüchern

Hier ist ein Beispiel, wie man ein verschachteltes Wörterbuch erstellt:


person = {
    "name": "Alice",
    "details": {
        "age": 25,
        "city": "New York",
        "address": {
            "street": "123 Main St",
            "zip": "10001"
        },
        "mother": "Jane Smith"
    },
    "gender": "female"
}
print(person)  # Ausgabe: {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}, 'mother': 'Jane Smith'}, 'gender': 'female'}

In diesem Beispiel ist person ein Wörterbuch, das ein verschachteltes Wörterbuch details enthält, welches wiederum ein weiteres verschachteltes Wörterbuch address enthält.

Ein verschachteltes Wörterbuch kann auch aus einzelnen Teilen erstellt werden:


address = {
    "street": "123 Main St",
    "zip": "10001"
}
         
details = {
    "age": 25,
    "city": "New York",
    "address": address
}
         
person = {
    "name": "Alice",
    "details": details,
    "gender": "female"
}
print(person)  # Ausgabe: {'name': 'Alice', 'details': {'age': 25, 'city': 'New York', 'address': {'street': '123 Main St', 'zip': '10001'}}, 'gender': 'female'}

7.2 Zugriff auf Elemente eines verschachtelten Wörterbuchs

Der Zugriff auf Elemente verschachtelter Wörterbücher ist einfach und intuitiv. So wird es gemacht:

Zugriff auf Elemente der obersten Ebene


name = person["name"]
print(name)  # Ausgabe: Alice

Zugriff auf Elemente eines verschachtelten Wörterbuchs


age = person["details"]["age"]
city = person["details"]["city"]
print(age)  # Ausgabe: 25
print(city)  # Ausgabe: New York

Zugriff auf tiefer verschachtelte Elemente


street = person["details"]["address"]["street"]
zip_code = person["details"]["address"]["zip"]
print(street)  # Ausgabe: 123 Main St
print(zip_code)  # Ausgabe: 10001

7.3 Ändern von Elementen eines verschachtelten Wörterbuchs

Wenn du bereits verstanden hast, wie man Elemente jeder Verschachtelungsebene ausgibt, wird deren Veränderung noch einfacher:

Ändern von Werten der obersten Ebene


person["name"] = "Bob"
print(person["name"])  # Ausgabe: Bob

Ändern von Werten eines verschachtelten Wörterbuchs


person["details"]["age"] = 26
print(person["details"]["age"])  # Ausgabe: 26

Ändern von tiefer verschachtelten Werten


person["details"]["address"]["city"] = "Los Angeles"
print(person["details"]["address"]["city"])  # Ausgabe: Los Angeles

Hinzufügen neuer Elemente in ein verschachteltes Wörterbuch


person["details"]["phone"] = "123-456-7890"
print(person["details"]["phone"])  # Ausgabe: 123-456-7890

Entfernen von Elementen der obersten Ebene


# Entferne das Element 'country' aus dem Wörterbuch 'person'
del person["country"]
print(person)  # Das Element 'country' wird aus dem Wörterbuch entfernt

Entfernen von Elementen aus einem verschachtelten Wörterbuch


# Entferne das Element 'phone' aus dem Wörterbuch 'details'
del person["details"]["phone"]
print(person["details"])  # Das Element 'phone' wird aus dem Wörterbuch 'details' entfernt

7.4 Durchlaufen von verschachtelten Wörterbüchern

Es gibt mehrere Möglichkeiten, alle Elemente eines Wörterbuchs zu durchlaufen. Schleifen sind die einfachste davon:

Iteration über Elemente eines verschachtelten Wörterbuchs


for key, value in person.items():  # Durchlaufe das übergeordnete Wörterbuch
    if isinstance(value, dict):  # Wenn der Wert ein Wörterbuch ist
        for key2, value2 in value.items():  # Durchlaufe die Elemente des untergeordneten Wörterbuchs
            print(f"{key} --> {key2}: {value2}")

Rekursive Iteration über alle Verschachtelungsebenen


def print_dict(d, indent=0):
    for key, value in d.items():
        print("  " * indent + str(key) + ": ", end="")
        if isinstance(value, dict):
            print()
            print_dict(value, indent + 1)
        else:
            print(value)
        
print_dict(person)

Mehr über Rekursion lernst du im Abschnitt „Algorithmen und Datenstrukturen“.

Übrigens ist Rekursion praktisch, um einen Wert tief in verschachtelten Wörterbüchern zu finden. Hier ein Beispiel:


def find_key(d, key):
    if key in d:
        return d[key]
    for k, v in d.items():
        if isinstance(v, dict):
            result = find_key(v, key)
            if result:
                return result
    return None
        
phone = find_key(person, "phone")
print(phone)  # Ausgabe: None (weil das Element 'phone' entfernt wurde)
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION