Umgang mit verschachtelten Datenstrukturen in Python

Techniken für die Arbeit mit komplexen Datenhierarchien

Lernen Sie, wie Sie verschachtelte Datenstrukturen in Python verwalten und manipulieren können, einschließlich Listen von Wörterbüchern, Wörterbücher von Listen und tief verschachtelte Objekte. Dieser Leitfaden enthält praktische Techniken für den Zugriff, die Iteration und die Umwandlung komplexer, verschachtelter Daten.

Programmierung
Autor:in
Zugehörigkeit
Veröffentlichungsdatum

9. Februar 2024

Geändert

29. April 2025

Schlüsselwörter

verschachtelte Datenstrukturen Python, Manipulation verschachtelter Daten, Python verschachtelte Listen, Python verschachtelte Wörterbücher

Einführung

In vielen realen Anwendungen sind die Daten nicht immer flach. Stattdessen liegen sie oft in verschachtelten Formaten vor, z. B. als Listen von Wörterbüchern, Wörterbücher mit Listen oder sogar noch tiefer verschachtelte Strukturen. Der Umgang mit dieser Art von komplexen Daten kann eine Herausforderung sein, aber mit den richtigen Techniken können Sie effizient auf verschachtelte Daten zugreifen, sie iterieren und transformieren. In diesem Lernprogramm finden Sie praktische Beispiele, die Ihnen helfen, diese Fähigkeiten in Python zu beherrschen.



Zugriff auf verschachtelte Elemente

Wenn Sie mit verschachtelten Daten arbeiten, müssen Sie zunächst wissen, wie Sie auf Elemente auf verschiedenen Ebenen zugreifen können. Betrachten Sie ein einfaches Beispiel für ein verschachteltes Wörterbuch, das einen Datensatz eines Schülers darstellt:

#| label: nested-access
student = {
    "name": "Alice",
    "grades": {
        "math": 90,
        "science": 85,
        "history": 88
    },
    "activities": ["basketball", "chess", "volunteering"]
}

# Zugriff auf verschachtelte Werte:
math_grade = student["grades"]["math"]
first_activity = student["activities"][0]

print("Math Grade:", math_grade)
print("First Activity:", first_activity)

In diesem Beispiel greifen wir auf die Mathenote aus einem verschachtelten Wörterbuch und auf die erste Aktivität aus einer verschachtelten Liste zu.

Ergebnisse:

Math Grade: 90
First Activity: basketball

Iteration durch verschachtelte Daten

Oft müssen Sie über verschachtelte Strukturen iterieren, um Informationen zu extrahieren oder umzuwandeln. Nehmen wir zum Beispiel eine Liste von Schülerdatensätzen, bei der jeder Datensatz ein Wörterbuch mit Noten ist:

#| label: iterate-nested
students = [
    {"name": "Alice", "grades": {"math": 90, "science": 85}},
    {"name": "Bob", "grades": {"math": 75, "science": 80}},
    {"name": "Charlie", "grades": {"math": 88, "science": 92}}
]

# Extrahieren der Mathenoten für alle Schüler
math_grades = [student["grades"]["math"] for student in students]
print("Math Grades:", math_grades)

Dieses Listenverständnis iteriert über jeden Schülerdatensatz und extrahiert die Mathenote, was eine einfache Möglichkeit darstellt, verschachtelte Daten zu durchlaufen.

Ergebnisse:

Math Grades: [90, 75, 88]

Verschachtelte Daten transformieren

Manchmal müssen Sie verschachtelte Daten umstrukturieren, um sie leichter bearbeiten zu können. So kann beispielsweise die Umwandlung eines Wörterbuchs mit Listen in eine Liste mit Wörterbüchern sehr nützlich sein.

#| label: transform-nested
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [25, 30, 35],
    "city": ["New York", "Los Angeles", "Chicago"]
}

# In eine Liste von Wörterbüchern konvertieren
flattened_data = [dict(zip(data, t)) for t in zip(*data.values())]
print("Flattened Data:", flattened_data)

Bei dieser Transformation werden die Funktion zip und Wörterbuchverständnisse verwendet, um die verschachtelte Datenstruktur in ein besser verwendbares Format umzuformatieren.

Ergebnisse:

Flattened Data: [
  {'name': 'Alice', 'age': 25, 'city': 'New York'}, 
  {'name': 'Bob', 'age': 30, 'city': 'Los Angeles'}, 
  {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
  ]

Kombinieren mehrerer Operationen

In der Praxis kann es vorkommen, dass Sie mehrere Operationen mit verschachtelten Daten durchführen müssen. Zum Beispiel das Zusammenführen von zwei Wörterbüchern und anschließendes Filtern auf der Grundlage einer Bedingung:

#| label: combined-operations
data1 = {"Alice": 25, "Bob": 30}
data2 = {"Charlie": 35, "Bob": 32}

# Verschmelzen von Wörterbüchern (data2-Werte überschreiben data1 bei doppelten Schlüsseln)
merged_data = {**data1, **data2}

# Herausfiltern von Einträgen, deren Alter niedriger ist 30
filtered_names = [name for name, age in merged_data.items() if age >= 30]
print("Filtered Names:", filtered_names)

Dieses Beispiel zeigt, wie man zwei Wörterbücher zusammenführt und dann die Schlüssel anhand der zugehörigen Werte herausfiltert.

Ergebnisse:

Filtered Names: ['Bob', 'Charlie']

Schlussfolgerung

Der Umgang mit verschachtelten Datenstrukturen ist eine wichtige Fähigkeit in Python, insbesondere bei der Arbeit mit komplexen realen Daten. Wenn Sie lernen, wie Sie auf verschachtelte Daten zugreifen, sie iterieren und umwandeln können, können Sie effizienteren und lesbaren Code schreiben. Experimentieren Sie mit diesen Beispielen und passen Sie sie an Ihre spezifischen Bedürfnisse an, um die Kunst der Verwaltung komplexer Datenhierarchien zu beherrschen.

Weiterführende Literatur

Viel Spaß beim Programmieren und beim Erforschen komplexer, verschachtelter Datenstrukturen in Python!

Weitere Artikel erkunden

Hinweis

Hier finden Sie weitere Artikel aus derselben Kategorie, die Ihnen helfen, tiefer in das Thema einzutauchen.

placeholder

placeholder
Keine Treffer
Zurück nach oben

Wiederverwendung

Zitat

Mit BibTeX zitieren:
@online{kassambara2024,
  author = {Kassambara, Alboukadel},
  title = {Umgang mit verschachtelten Datenstrukturen in Python},
  date = {2024-02-09},
  url = {https://www.datanovia.com/de/learn/programming/python/additional-tutorials/nested-data-structures.html},
  langid = {de}
}
Bitte zitieren Sie diese Arbeit als:
Kassambara, Alboukadel. 2024. “Umgang mit verschachtelten Datenstrukturen in Python.” February 9, 2024. https://www.datanovia.com/de/learn/programming/python/additional-tutorials/nested-data-structures.html.