Voraussetzungen
Du kennst die Inhalte aus Teil 9 und arbeitest mit einem lokalen Python-3-Interpreter (ab Python 3.10), beispielsweise in Thonny.
Das lernst du in dieser Lektion
- Dictionary-Werte über Schlüssel lesen.
- Listen aus Dictionaries aufbauen.
- Tupel für feste Wertegruppen nutzen.
Ein Eintrag mit mehreren Eigenschaften
Eine Restmenge allein sagt wenig aus. Wir möchten wissen, zu welchem Material und welcher Farbe sie gehört. Ein Dictionary ordnet Schlüsseln passende Werte zu:
rolle = {"material": "PLA", "farbe": "Blau", "rest_g": 750}
print(rolle["material"])
print(rolle["rest_g"])
rolle["rest_g"] = 700
Geschweifte Klammern erzeugen hier ein Dictionary. Zwischen Schlüssel und Wert steht ein Doppelpunkt. rolle["rest_g"] greift über einen Namen zu, nicht über die Position des Eintrags. Schlüssel müssen eindeutig sein; eine erneute Zuweisung zum gleichen Schlüssel ersetzt dessen Wert.
Fehlende Angaben behandeln
rolle = {"material": "PLA", "rest_g": 750}
print(rolle.get("farbe", "nicht angegeben"))
if "rest_g" in rolle:
print("Restmenge vorhanden")
Ein direkter Zugriff auf einen fehlenden Schlüssel würde einen KeyError auslösen. get() liefert stattdessen den angegebenen Ersatzwert. Ohne Ersatzwert ist das Ergebnis bei fehlendem Schlüssel None. Die Prüfung in bezieht sich bei Dictionaries auf die Schlüssel.
Mehrere Rollen verwalten
bestand = [
{"material": "PLA", "farbe": "Blau", "rest_g": 750},
{"material": "PETG", "farbe": "Schwarz", "rest_g": 420},
]
for rolle in bestand:
print(f"{rolle['material']} / {rolle['farbe']}: {rolle['rest_g']} g")
Die äußere Liste hält die einzelnen Rollen. Jeder Listeneintrag ist ein Dictionary. Die einfache Anführungsform innerhalb der f-Strings verhindert, dass die doppelten Anführungszeichen des äußeren Textes zu früh geschlossen werden. Diese Schreibweise funktioniert auch in älteren Python-3-Versionen.
Mit for schluessel, wert in rolle.items(): könntest du alle Eigenschaften einer einzelnen Rolle durchlaufen. Meist ist eine gezielte Ausgabe für Anwender aber verständlicher.
Tupel für zusammengehörige Werte
abmessungen_mm = (80, 50, 4)
breite, tiefe, hoehe = abmessungen_mm
print(f"{breite} x {tiefe} x {hoehe} mm")
Ein Tupel ist eine unveränderliche Folge: Seine Elemente lassen sich nicht wie Listeneinträge ersetzen. Beim Entpacken müssen Anzahl der Werte und Variablen zusammenpassen. Ein Tupel mit genau einem Element braucht ein Komma, etwa (80,). Unveränderlich bedeutet hier, dass die Verweise im Tupel feststehen; eine enthaltene veränderliche Liste könnte trotzdem geändert werden.
Für unsere Bestandsverwaltung verwenden wir eine Liste mit Dictionaries. Sie lässt sich leicht erweitern und später als JSON speichern.
Mitmach-Aufgabe
Erstelle eine Liste mit zwei Rollen zu 500 g PLA und 300 g PETG. Berechne in einer Schleife die Gesamtmenge. Die Farben darfst du selbst wählen.
Versuche die Aufgabe zuerst selbst. Vergleiche danach deinen Ansatz mit der Musterlösung. Andere Lösungen sind möglich, wenn sie dieselben Anforderungen erfüllen.
Musterlösung
bestand = [
{"material": "PLA", "farbe": "Rot", "rest_g": 500},
{"material": "PETG", "farbe": "Weiß", "rest_g": 300},
]
gesamt_g = 0
for rolle in bestand:
gesamt_g += rolle["rest_g"]
print(f"Gesamtbestand: {gesamt_g} g")
Ergebnis prüfen
Die Gesamtmenge beträgt 800 g. Das Ergebnis ist unabhängig von der gewählten Farbe.
Typische Stolperstellen
rest_g und rest sind verschiedene Schlüssel. Dictionaries besitzen keinen automatischen Positionszugriff mit 0. get() prüft nicht, ob ein vorhandener Wert den richtigen Typ hat.
Was du jetzt kannst
- Dictionary-Werte über Schlüssel lesen.
- Listen aus Dictionaries aufbauen.
- Tupel für feste Wertegruppen nutzen.
Passendes Cheatsheet
Zum Nachschlagen: Cheatsheet 07 – Listen, Tupel und Dictionaries. Dort findest du auch den vorhandenen PDF-Download.
Im nächsten Teil
In Teil 11 geht es um Texte bearbeiten und Eingaben bereinigen. Bereinige Eingaben, suche in Texten und zerlege einfache Zeichenketten in einzelne Angaben.
