0%

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.