Zum Hauptinhalt

Lists, Tuples und Dictionaries

Abschlussbedingungen

In diesem Kapitel werden wir drei wesentliche Datentypen in Python kennenlernen: Listen, Tupel und Wörterbücher. Listen sind flexible, geordnete Sammlungen von Elementen, die verändert werden können, was sie ideal zum Speichern von Datensequenzen macht, bei denen es notwendig sein kann, Elemente hinzuzufügen, zu entfernen oder zu ändern. Tupel hingegen sind ähnlich wie Listen, aber unveränderlich, was bedeutet, dass ihr Inhalt nach der Erstellung nicht mehr geändert werden kann. Sie sind daher ideal, um feste Daten zu speichern, die nicht verändert werden sollten. Wörterbücher sind ungeordnete Sammlungen von Schlüssel-Wert-Paaren, die eine effiziente Datenabfrage durch die Verwendung von einzigartigen Schlüsseln ermöglichen, und sind perfekt geeignet, um strukturierte Daten darzustellen, wie etwa das Speichern von Attributen eines Objekts oder das Zuordnen von Werten. Zusammen bilden diese Datentypen grundlegende Werkzeuge zum Organisieren und Verwalten von Daten in Python.

 

Dictionary 

Dictionary 

In Python ist ein Dictionary eine Sammlung von Schlüssel-Wert-Paaren. Jeder Schlüssel ist eindeutig und wird verwendet, um Daten effizient zu speichern und abzurufen. Ein Dictionary ist veränderlich, das heißt, Sie können Elemente hinzufügen, entfernen oder aktualisieren. Dictionaries sind besonders nützlich, wenn Sie Daten strukturiert speichern möchten, wobei jedes Element ein beschreibendes Label hat.

Erstellen eines Dictionaries

Dictionaries werden mit geschweiften Klammern {} erstellt, wobei Paare im Format Schlüssel: Wert angegeben werden. Schlüssel sind in der Regel Zeichenketten oder Zahlen, während Werte jeden beliebigen Datentyp haben können.

# Erstellen eines Dictionaries mit Zeichenketten als Schlüsseln
auto = {
    "marke": "Toyota",
    "modell": "Corolla",
    "jahr": 2020
}

Zugriff auf Werte in einem Dictionary

Auf die Werte in einem Dictionary kann über ihre Schlüssel zugegriffen werden. Wenn der Schlüssel nicht vorhanden ist, wird ein KeyError ausgegeben. Um dies zu vermeiden, können Sie die Methode get() verwenden, die None zurückgibt, falls der Schlüssel nicht gefunden wird.

print(auto["marke"])       # Ausgabe: "Toyota"
print(auto.get("modell"))  # Ausgabe: "Corolla"
print(auto.get("farbe"))   # Ausgabe: None (da "farbe" kein Schlüssel ist)

Hinzufügen und Aktualisieren von Elementen

Sie können ein neues Schlüssel-Wert-Paar hinzufügen oder ein vorhandenes aktualisieren, indem Sie einem bestimmten Schlüssel einen Wert zuweisen.

auto["farbe"] = "Blau"          # Fügt ein neues Schlüssel-Wert-Paar hinzu
auto["jahr"] = 2021             # Aktualisiert den vorhandenen Wert für "jahr"
print(auto)                     # Ausgabe: {'marke': 'Toyota', 'modell': 'Corolla', 'jahr': 2021, 'farbe': 'Blau'}

Entfernen von Elementen

Dictionaries bieten mehrere Methoden, um Elemente zu entfernen:

  • pop(schlüssel): Entfernt das Element mit dem angegebenen Schlüssel und gibt dessen Wert zurück.
  • popitem(): Entfernt und gibt das letzte eingefügte Schlüssel-Wert-Paar zurück (ab Python 3.7).
  • del: Löscht das angegebene Schlüssel-Wert-Paar.
  • clear(): Entfernt alle Elemente aus dem Dictionary.
auto.pop("farbe")         # Entfernt das Schlüssel-Wert-Paar "farbe"
del auto["modell"]        # Löscht das Schlüssel-Wert-Paar "modell"
auto.clear()              # Leert das Dictionary
print(auto)               # Ausgabe: {}

Durchlaufen eines Dictionaries

Sie können ein Dictionary durchlaufen, um auf die Schlüssel, Werte oder Schlüssel-Wert-Paare zuzugreifen.

auto = {"marke": "Toyota", "modell": "Corolla", "jahr": 2020}

# Durchlaufen der Schlüssel
for schlüssel in auto:
    print(schlüssel)

# Durchlaufen der Werte
for wert in auto.values():
    print(wert)

# Durchlaufen der Schlüssel-Wert-Paare
for schlüssel, wert in auto.items():
    print(f"{schlüssel}: {wert}")




 

Dictionary-Methoden

Einige gängige Methoden für Dictionaries sind:

  • keys(): Gibt alle Schlüssel zurück.
  • values(): Gibt alle Werte zurück.
  • items(): Gibt alle Schlüssel-Wert-Paare zurück.
  • update(): Aktualisiert das Dictionary mit Schlüssel-Wert-Paaren aus einem anderen Dictionary oder einer Sammlung von Schlüssel-Wert-Paaren.
print(auto.keys())          # Ausgabe: dict_keys(['marke', 'modell', 'jahr'])
print(auto.values())        # Ausgabe: dict_values(['Toyota', 'Corolla', 2020])
print(auto.items())         # Ausgabe: dict_items([('marke', 'Toyota'), ('modell', 'Corolla'), ('jahr', 2020)])

# Aktualisierung des Dictionaries
auto.update({"farbe": "Rot", "jahr": 2021})
print(auto)                 # Ausgabe: {'marke': 'Toyota', 'modell': 'Corolla', 'jahr': 2021, 'farbe': 'Rot'}

 



Keine Duplikate in Dictionaries

Ein wichtiges Merkmal von Dictionaries ist, dass Schlüssel einzigartig sein müssen. Wenn Sie einen Schlüssel im Dictionary wiederholen, überschreibt der neuere Eintrag den vorherigen. Dadurch sind Duplikate von Schlüsseln nicht erlaubt. Dies trägt zur Effizienz und Eindeutigkeit der gespeicherten Daten bei.

produkt = {
    "name": "Laptop",
    "preis": 1200,
    "name": "Tablet"      # Der Schlüssel "name" wird überschrieben
}

print(produkt)             # Ausgabe: {'name': 'Tablet', 'preis': 1200}





Anwendungsfälle für Dictionaries

  • Strukturierte Datenspeicherung: Dictionaries sind ideal, um Daten mit Labels zu organisieren, z. B. Benutzerprofile oder Produktattribute.
produkt = {
    "name": "Laptop",
    "preis": 999.99,
    "lagerbestand": 15
}

print("Produkt:", produkt["name"])  # Ausgabe: Produkt: Laptop
print("Preis:", produkt["preis"])   # Ausgabe: Preis: 999.99

 

  • Schnelle Suchzugriffe: Durch die Verwendung einer Hash-Tabelle ermöglichen Dictionaries schnelle Suchzugriffe auf Daten, was sie für große Datensätze effizient macht.
inventar = {
    "laptop": 20,
    "tastatur": 50,
    "maus": 75
}

# Neue Lieferung
inventar["tastatur"] += 10
# Verkauf von Artikeln
inventar["maus"] -= 5

print(inventar)  # Ausgabe: {'laptop': 20, 'tastatur': 60, 'maus': 70}

 

  • Abbildung von Beziehungen: Dictionaries können Beziehungen darstellen, wie die Zuordnung von Wörtern zu ihren Definitionen oder die Speicherung von Konfigurationseinstellungen.
def verarbeite_befehl(befehl):
    befehle = {
        "start": "System wird gestartet...",
        "stopp": "System wird gestoppt...",
        "neustart": "System wird neu gestartet..."
    }
    return befehle.get(befehl, "Ungültiger Befehl")

print(verarbeite_befehl("start"))      # Ausgabe: System wird gestartet...
print(verarbeite_befehl("abschalten")) # Ausgabe: Ungültiger Befehl

 

   

Mithilfe der Schleifen, die in einem späteren Kapitel vorgestellt werden, können Wörterbücher anhand ihrer Schlüssel oder Werte durchlaufen werden.

 

Nested Dictionaries

Ein verschachteltes Dictionary in Python ist ein Dictionary, das andere Dictionaries als Werte enthält. Diese Struktur ist besonders nützlich, um komplexe, hierarchische Daten darzustellen. Mit verschachtelten Dictionaries können Sie Informationen speichern, die mehrere Ebenen an Details benötigen, wie z. B. Mitarbeiterdaten, Produktspezifikationen oder andere Datensätze, die Schichten organisierter Daten erfordern.

 

Erstellen eines Verschachtelten Dictionaries

Ein verschachteltes Dictionary wird erstellt, indem man Dictionaries als Werte in einem anderen Dictionary speichert. Jedes innere Dictionary kann Schlüssel-Wert-Paare enthalten, die spezifisch für das jeweilige Element sind.

Beispiel:

Angenommen, Sie möchten Informationen über Mitarbeiter speichern, einschließlich Namen, Alter und Abteilung. Jeder Mitarbeiter hat ein eigenes Dictionary, und alle Mitarbeiter werden in einem Haupt-Dictionary gespeichert.

mitarbeiter = {
    "mitarbeiter_1": {
        "name": "Alice",
        "alter": 30,
        "abteilung": "Entwicklung"
    },
    "mitarbeiter_2": {
        "name": "Bob",
        "alter": 25,
        "abteilung": "Marketing"
    }
}

 

In diesem Beispiel:

  • mitarbeiter_1 und mitarbeiter_2 sind Schlüssel im Haupt-Dictionary mitarbeiter.
  • Jeder dieser Schlüssel hat ein inneres Dictionary als Wert, das spezifische Informationen für den jeweiligen Mitarbeiter enthält.

Zugriff auf Werte in einem Verschachtelten Dictionary

Um auf Werte in einem verschachtelten Dictionary zuzugreifen, geben Sie jeden Schlüssel der Reihe nach von außen nach innen an.

# Zugriff auf den Namen von mitarbeiter_1
print(mitarbeiter["mitarbeiter_1"]["name"])  # Ausgabe: Alice

# Zugriff auf das Alter von mitarbeiter_2
print(mitarbeiter["mitarbeiter_2"]["alter"])   # Ausgabe: 25

 

Hinzufügen und Aktualisieren von Elementen in einem Verschachtelten Dictionary

Sie können neue Elemente entweder zum Haupt-Dictionary oder zu einem der inneren Dictionaries hinzufügen.

Beispiel:

Hinzufügen eines neuen Mitarbeiters:

# Hinzufügen eines neuen Mitarbeiters zum Haupt-Dictionary
mitarbeiter["mitarbeiter_3"] = {
    "name": "Charlie",
    "alter": 28,
    "abteilung": "Vertrieb"
}
print(mitarbeiter)

Aktualisieren eines vorhandenen Eintrags:

# Aktualisieren der Abteilung von mitarbeiter_1
mitarbeiter["mitarbeiter_1"]["abteilung"] = "Produktentwicklung"
print(mitarbeiter["mitarbeiter_1"])  # Ausgabe: {'name': 'Alice', 'alter': 30, 'abteilung': 'Produktentwicklung'}

 

Entfernen von Elementen aus einem Verschachtelten Dictionary

Sie können Elemente aus einem verschachtelten Dictionary mithilfe von del entfernen, genauso wie bei einem normalen Dictionary.

Beispiel:

Einen Mitarbeiter vollständig entfernen:

# Entfernen von mitarbeiter_2 aus mitarbeiter
del mitarbeiter["mitarbeiter_2"]
print(mitarbeiter)  # Ausgabe enthält mitarbeiter_2 nicht mehr


Ein bestimmtes Feld innerhalb eines Mitarbeiters entfernen:

# Entfernen des Alters von mitarbeiter_1
del mitarbeiter["mitarbeiter_1"]["alter"]
print(mitarbeiter["mitarbeiter_1"])  # Ausgabe: {'name': 'Alice', 'abteilung': 'Produktentwicklung'}

 

Durchlaufen eines Verschachtelten Dictionaries

Um ein verschachteltes Dictionary zu durchlaufen, können Sie verschachtelte Schleifen verwenden. Damit können Sie sowohl die äußeren als auch die inneren Dictionary-Schlüssel und -Werte abrufen.

for mitarbeiter_id, info in mitarbeiter.items():
    print(f"Mitarbeiter-ID: {mitarbeiter_id}")
    for schlüssel, wert in info.items():
        print(f"  {schlüssel}: {wert}")

 

Praktisches Beispiel: Speichern von Produktspezifikationen

Angenommen, Sie verwalten Daten für Produkte, und jedes Produkt hat verschiedene Details wie Kategorie, Preis und Lagerbestand.

produkte = {
    "produkt_1": {
        "name": "Laptop",
        "kategorie": "Elektronik",
        "preis": 1200,
        "lagerbestand": 50
    },
    "produkt_2": {
        "name": "Stuhl",
        "kategorie": "Möbel",
        "preis": 100,
        "lagerbestand": 150
    }
}


Sie können bestimmte Daten innerhalb dieser Struktur einfach abrufen und ändern:

# Zugriff auf den Preis des Laptops
print(produkte["produkt_1"]["preis"])  # Ausgabe: 1200

# Hinzufügen eines neuen Felds zu produkt_2
produkte["produkt_2"]["farbe"] = "Schwarz"
print(produkte["produkt_2"])

 

Weitere Iterationen über Listen, tupel und Dictionary werden mit der Einführung von For-loops und While-loops eingeführt.

Exercise

#Exercise
"""
Erstellen Sie aus den angegebenen Mitarbeiterdaten eine Liste mit Mitarbeitercodes. Bitten Sie darum, einen der
Mitarbeitercodes als Eingabe zu verwenden. Suchen Sie mithilfe der Indizierung das Berufsprofil des Mitarbeiters.
"""
Employee_data = { 101:['Tobi', 24, 'Python developer'] ,
                 102:['Mary',27,'Strategist'],
                  103:['Luis', 28,'Product lead'],
                  104:['Ahmed',31,'Product Designer' ],
                  105:['Anne',35,'Project Manager' ]}