Dictionaries und andere Sammlungen · Übung
Funktionen für Dictionary-Datensätze schreiben
Kapitel 8 hat Funktionen klare Eingaben und Ausgaben gegeben. Ein Dictionary kann mehrere zusammengehörige Eingaben in einem Datensatz bündeln.
book = {
"title": "Kindred",
"category": "novel",
"year": 1979,
}
Eine Formatierungsfunktion kann diesen Datensatz erhalten:
def catalog_line(item):
return f"{item['title']} | {item['category']} | {item['year']}"
Der Parameter item enthält während des Aufrufs ein Dictionary. Zugriffe mit eckigen Klammern lesen seine Pflichtfelder.
line = catalog_line(book)
print(line)
Das gibt Folgendes aus:
Kindred | novel | 1979
Das Dictionary legt die Struktur eines Datensatzes fest
catalog_line erwartet einen Eintrag mit drei Schlüsseln:
"title""category""year"
Diese erwartete Zusammenstellung von Feldern ist die Struktur des Datensatzes. Python deklariert sie hier nicht gesondert. Die Funktion und die Daten müssen zusammenpassen.
Dieser Datensatz funktioniert:
map_item = {
"title": "City map",
"category": "reference",
"year": 2026,
}
Diesem fehlt ein erforderlicher Schlüssel:
incomplete = {
"title": "City map",
"year": 2026,
}
Der Aufruf catalog_line(incomplete) löst einen KeyError für "category" aus.
Das ist kein Grund, überall .get() zu verwenden. Wenn jeder Katalogeintrag eine Kategorie benötigt, sollte der unvollständige Datensatz korrigiert werden.
Aufgaben getrennt halten
Das Dictionary speichert Fakten. Die Funktion entscheidet, wie sie formatiert werden. Der aufrufende Code entscheidet, ob die zurückgegebene Zeile ausgegeben, gespeichert oder verglichen wird.
line = catalog_line(book)
print(line)
Das ist dieselbe Grenze, die du in Kapitel 8 mit Strings und Listen geübt hast, jetzt angewendet auf einen strukturierten Datensatz.
Was enthält summary?
def item_summary(item):
return f"{item['name']}: {item['stock']}"
record = {"name": "Compass", "stock": 8}
summary = item_summary(record)
Aufgabe
Vervollständige catalog_line(item) so, dass die Funktion die Pflichtfelder des Eintrags in dieser Form zurückgibt:
Kindred | novel | 1979
Lies "title", "category" und "year" aus dem Dictionary-Parameter. Gib den String zurück, statt ihn innerhalb der Funktion auszugeben.
Behalte den vorhandenen Aufruf und die abschließende Ausgabe bei.