Weiter zum Inhalt

Python KeyError-Exceptions und wie du sie behebst

Lerne zentrale Techniken wie Exception-Handling und Fehlerprävention, um mit der KeyError-Exception in Python effektiv umzugehen.
Aktualisiert 18. Sept. 2026  · 6 Min. lesen

Mit KI erkunden

ChatGPTClaudePerplexity

Selbst erfahrene Programmierer machen Fehler. Bei Python fallen diese in zwei Kategorien: Errors und Exceptions.

Errors betreffen vor allem die Syntax. Sie müssen behoben werden, damit das Programm läuft. Eine Exception tritt hingegen auf, wenn der Code syntaktisch korrekt ist, aber während der Ausführung etwas unterbrochen wird. 

In diesem Tutorial schauen wir uns eine der häufigsten Exceptions an, die sowohl Anfänger als auch Fortgeschrittene sehen: die KeyError-Exception. Wir erklären die Details von Pythons KeyError, geben Beispiele und zeigen verschiedene Techniken, um diese Art von Exception zu handhaben. Wenn du lernen willst, wie du Fehler in Python findest und behebst, wirf auch einen Blick auf unser Tutorial Exception & Error Handling in Python

Was ist eine KeyError-Exception?

In Python ist eine KeyError-Exception eine der eingebauten Exceptions, die eine Reihe typischer Fehlersituationen abdeckt. Eine KeyError-Exception ist zusammen mit IndexError eine Unterklasse der allgemeineren LookupError-Exception; alle sind Objekte der Klasse Exception.

Konkret wird eine KeyError-Exception ausgelöst, wenn versucht wird, auf einen Schlüssel zuzugreifen, der in einem Dictionary nicht existiert. Ein Dictionary ist eine Datenstruktur, die Daten als Schlüssel-Wert-Paare speichert; auf den Wert greifst du über seinen Schlüssel zu – daher der Name KeyError

Häufige Ursachen für Python KeyError und Beispiele

Schauen wir uns ein Beispiel mit einem Dictionary von Ländern und deren Hauptstädten an:

dictionary_capitals = {'Madrid': 'Spain',
 'Lisboa': 'Portugal', 'London': 'United Kingdom'}

Um Informationen im Dictionary zu finden, gibst du den Schlüssel in eckigen Klammern an und Python liefert den zugehörigen Wert.

dictionary_capitals['Madrid']
'Spain'

Versuchen wir, einen nicht vorhandenen Schlüssel zu lesen, gibt Python eine KeyError-Fehlermeldung aus. 

dictionary_capitals['Rome']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Rome'

Einen KeyError kannst du auch bei anderen Mapping-Objekten bekommen, die sich wie Dictionaries verhalten. Zum Beispiel liefert das Objekt os.environ ein Dictionary mit den Umgebungsvariablen des Nutzers als Schlüssel samt zugehöriger Werte.

Im folgenden Code versuchen wir, den Wert zum Schlüssel USERS im os.environ-Dictionary zu lesen. Da USERS nicht vorhanden ist, erhalten wir einen KeyError.

#Calling a non-existent environmental variable
os.environ['USERS']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'USERS'

Wie sich zeigt, sind Dictionaries in Python sehr verbreitet. Ein weiteres Beispiel ist die Implementierung eines abstrakteren Konzepts namens Hashmap. Mehr dazu erfährst du in unserem Tutorial Guide to Python Hashmaps.

KeyError in Python handhaben

Lass uns Methoden anschauen, um KeyError-Exceptions zu handhaben. Es gibt zwei Strategien: Du kannst KeyError vermeiden oder sie per Exception-Handling abfangen. 

KeyError verhindern

Wie gesehen, wirft Python einen KeyError, wenn wir auf einen nicht existierenden Schlüssel zugreifen. Um das zu verhindern, können wir Schlüssel über die Methode .get() lesen, was den Code fehlertoleranter macht. Trifft diese Methode auf einen fehlenden Schlüssel, gibt Python None statt KeyError zurück. Das ist ein guter Ansatz.

print(dictionary_capitals.get('Prague'))
None

Alternativ können wir vor dem Zugriff prüfen, ob ein Schlüssel existiert. Diese Art der Fehlervermeidung heißt „Look Before You Leap“ (LBYL). Dafür eignen sich if-Abfragen: Existiert der Schlüssel nicht, behandeln wir den Fall im else-Zweig.

capital = "Prague"
if capital in dictionary_capitals.keys():
    value = dictionary_capitals[capital]
else:
    print("The key {} is not present in the dictionary".format(capital)) 

KeyError per Exception-Handling abfangen

Der zweite Ansatz heißt „Easier to Ask Forgiveness Than Permission“ (EAFP) und ist in Python sogar üblicher. 

Beim EAFP-Stil gehst du von gültigen Schlüsseln aus und fängst Exceptions ab, falls die Annahme falsch ist. Während LBYL auf if/else basiert, nutzt EAFP try/except-Blöcke. 

Im folgenden Beispiel prüfen wir nicht erst, ob der Schlüssel existiert, sondern greifen direkt zu. Falls der Schlüssel fehlt, fangen wir den KeyError im except-Zweig ab und behandeln ihn passend.

capital = "Prague"
try:
     value = dictionary_capitals[capital]
except KeyError:
     print("The key {} is not present in the dictionary".format(capital)) 

Fortgeschrittenes KeyError-Management in Python

defaultdict für automatisches Schlüssel-Handling verwenden

Wir sehen: Greifen wir auf einen fehlenden Schlüssel zu, liefert Python eine KeyError-Exception. Die Methode .get() ist ein fehlertoleranter Ansatz, aber nicht immer optimal.

Das Modul collections bietet defaultdict – eine effizientere Lösung für Dictionary-Einträge. Im Gegensatz zu Standard-Dictionaries, die bei fehlenden Schlüsseln einen KeyError werfen, erlaubt defaultdict das Festlegen eines Standardwerts, der zurückgegeben wird, wenn ein Schlüssel nicht gefunden wird. Der folgende Code zeigt, wie du defaultdict aus collections importierst und den Standardwert per lambda-Funktion definierst. Falls dich Lambda-Funktionen verwirren, schau in unser Python lambda Tutorial.

from collections import defaultdict 

# Defining the dict 
capitals = defaultdict(lambda: "The key doesn't exist") 
capitals['Madrid'] = 'Spain'
capitals['Lisboa'] = 'Portugal'
print(capitals['Madrid']) 
print(capitals['Lisboa']) 
print(capitals['Ankara'])
Spain
Portugal
The key doesn't exist

KeyErrors gezielt auslösen

In manchen Fällen ist es sinnvoll, einen KeyError bewusst auszulösen, um Regeln durchzusetzen.

Häufig sind Funktionen darauf angewiesen, dass bestimmte Daten verfügbar sind. Ein manuell ausgelöster KeyError sorgt dann dafür, dass die Funktion klar und vorhersagbar fehlschlägt, wenn benötigte Daten fehlen. Die mitgegebene Fehlermeldung zeigt präzise, was an der Eingabe nicht stimmt – das erleichtert das Debugging.

Ein Beispiel: Wir erstellen eine Funktion, die ein Dictionary als Argument erhält. Die Nutzer müssen die richtigen Schlüssel bereitstellen, damit die Funktion korrekt läuft. Wir kapseln das in eine Funktion, um fehlende Schlüssel frühzeitig zu erkennen, statt den Fehler später im Code auftreten zu lassen. 

def my_function(my_dict): 
    if 'critical_key' not in my_dict: 
        raise KeyError('critical_key is missing from the dictionary. Please modify the dictionary')

Fazit

Wir hoffen, dir hat dieser Artikel gefallen. KeyError gehört zu den häufigsten Exceptions, denen Python-Entwickler begegnen. Souveränes Fehler- und Exception-Handling ist ein Schlüssel, um in Python richtig stark zu werden. Lerne weitere funktionale Programmiertechniken und andere Grundlagen in unseren Lernpfaden Python Programming und Python Fundamentals. Sieh dir außerdem unser Tutorial Python Sets and Set Theory an, um angrenzende Konzepte zu vertiefen. 


Javier Canales Luna's photo
Author
Javier Canales Luna
LinkedIn

Ich bin freiberufliche Datenanalystin und arbeite mit Unternehmen und Organisationen auf der ganzen Welt an Data-Science-Projekten zusammen. Ich bin auch Ausbilder für Data Science mit mehr als 2 Jahren Erfahrung. Ich schreibe regelmäßig datenwissenschaftliche Artikel in englischer und spanischer Sprache, von denen einige auf etablierten Websites wie DataCamp, Towards Data Science und Analytics Vidhya veröffentlicht wurden. Als Datenwissenschaftlerin mit einem Hintergrund in Politik- und Rechtswissenschaften ist es mein Ziel, an der Schnittstelle von Politik, Recht und Technologie zu arbeiten und die Macht der Ideen zu nutzen, um innovative Lösungen und Erzählungen voranzutreiben, die uns dabei helfen können, dringende Herausforderungen wie die Klimakrise anzugehen. Ich betrachte mich als Autodidakt, der ständig lernt und ein überzeugter Verfechter der Multidisziplinarität ist. Es ist nie zu spät, neue Dinge zu lernen.

Themen
Python
Datenanalyse

Lerne Python mit DataCamp

Kurs

Effizienten Python-Code schreiben

4 Std.
155.5K
Dieser Kurs zeigt, wie du effizienten und schnell ausführbaren Code schreibst, der Ressourcen geschickt zuweist und Mehraufwand vermeidet.
Details anzeigenRight Arrow
Kurs Starten
Mehr anzeigenRight Arrow