Werte lesen
Ein Dictionary ist nur nützlich, wenn du die Werte wieder herausholen kannst. Um einen Wert zu lesen, schreibst du den Namen des Dictionaries und dann den Schlüssel in eckigen Klammern:
buch = {"titel": "Der Hobbit", "autor": "J. R. R. Tolkien", "seiten": 310}
print(buch["titel"])
print(buch["seiten"])Der Hobbit
310Das sieht aus wie das Lesen eines Listenelements, namen[0], aber in den Klammern steht ein Schlüssel statt eines Indexes. Ein Dictionary hat keine Indizes: Du findest jeden Wert über seinen Schlüssel, so wie du ein Wort im Wörterbuch über das Wort selbst findest und nicht über seine Position.
buch["titel"] ist ein Wert wie jeder andere. Du kannst ihn in einer Variablen speichern, damit rechnen oder ihn in einen f-String setzen:
buch = {"titel": "Der Hobbit", "autor": "J. R. R. Tolkien", "seiten": 310}
gelesene_seiten = 100
print(f"{buch['titel']} von {buch['autor']}")
print("Seiten übrig:", buch["seiten"] - gelesene_seiten)Der Hobbit von J. R. R. Tolkien
Seiten übrig: 210Sieh dir die Anführungszeichen im f-String an: Die Schlüssel stehen in einfachen Anführungszeichen, buch['titel']. Der f-String selbst steht in doppelten, und ältere Python-Versionen würden denken, dass das nächste doppelte Anführungszeichen ihn beendet. Seit Version 3.12 versteht Python auch f"{buch["titel"]}", aber mit einfachen Anführungszeichen innen läuft dein Code in jeder Version.
Was passiert, wenn du einen Schlüssel liest, der nicht im Dictionary steht? Python kann ihn nicht finden, und das Programm endet mit einem KeyError:
buch = {"titel": "Der Hobbit", "autor": "J. R. R. Tolkien", "seiten": 310}
print(buch["jahr"])Traceback (most recent call last):
File "<exec>", line 3, in <module>
KeyError: 'jahr'Die letzte Zeile sagt, was schiefgegangen ist: ein KeyError und der Schlüssel, den Python nicht gefunden hat, 'jahr'. Das Buch hat kein Jahr. Die Zeile darüber verrät dir, in welcher Zeile des Programms es passiert ist. Achte auch auf diese Ursachen:
- Groß- und Kleinschreibung zählen, wie bei Variablennamen:
buch["Titel"]endet mitKeyError: 'Titel'. - Ein Dictionary hat keine Indizes, also endet
buch[0]mitKeyError: 0.
Wenn du einen KeyError siehst, prüfe also, wie du den Schlüssel geschrieben hast. In einer der nächsten Übungen lernst du, wie du prüfst, ob ein Schlüssel vorhanden ist, bevor du ihn liest.
So schreibst du es:
Anweisungen
- 1
Das Programm endet mit einem
KeyError. Lies die letzte Zeile der Fehlermeldung und korrigiere dann den Schlüssel inprint(), sodass das Programm den Titel des Buchs ausgibt,Der Hobbit. - 2
Gib darunter den Satz
Der Hobbit hat 310 Seiten.aus. Tippe den Titel und die Zahl nicht selbst ein: Lies sie aus dem Dictionary, zum Beispiel in einem f-String.