So beheben Sie KeyError: 'key' in Python-Wörterbüchern

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Python-Wörterbücher (dictionaries) sind leistungsstarke Datenstrukturen, die es Ihnen ermöglichen, Daten effizient zu speichern und abzurufen. Ein häufiges Problem, mit dem Entwickler konfrontiert werden, ist der KeyError, der auftritt, wenn versucht wird, auf einen Schlüssel zuzugreifen, der nicht im Wörterbuch existiert. In diesem Tutorial werden Sie durch den Prozess des Verständnisses von Python-Wörterbüchern, der Identifizierung und Behandlung des KeyError geführt und erfahren, welche bewährten Verfahren Sie anwenden können, um dieses Problem in Ihrem Python-Code zu vermeiden.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/ErrorandExceptionHandlingGroup -.-> python/raising_exceptions("Raising Exceptions") python/ErrorandExceptionHandlingGroup -.-> python/custom_exceptions("Custom Exceptions") python/ErrorandExceptionHandlingGroup -.-> python/finally_block("Finally Block") subgraph Lab Skills python/dictionaries -.-> lab-417494{{"So beheben Sie KeyError: 'key' in Python-Wörterbüchern"}} python/catching_exceptions -.-> lab-417494{{"So beheben Sie KeyError: 'key' in Python-Wörterbüchern"}} python/raising_exceptions -.-> lab-417494{{"So beheben Sie KeyError: 'key' in Python-Wörterbüchern"}} python/custom_exceptions -.-> lab-417494{{"So beheben Sie KeyError: 'key' in Python-Wörterbüchern"}} python/finally_block -.-> lab-417494{{"So beheben Sie KeyError: 'key' in Python-Wörterbüchern"}} end

Python-Wörterbücher (dictionaries) verstehen

Python-Wörterbücher (dictionaries) sind leistungsstarke Datenstrukturen, die es Ihnen ermöglichen, Daten in Schlüssel-Wert-Paaren zu speichern und abzurufen. Sie sind äußerst vielseitig und werden in verschiedenen Programmieraufgaben weit verbreitet eingesetzt, von der Datenmanipulation bis hin zum Bau komplexer Anwendungen.

Was ist ein Python-Wörterbuch?

Ein Python-Wörterbuch ist eine ungeordnete Sammlung von Schlüssel-Wert-Paaren. Jeder Schlüssel im Wörterbuch muss eindeutig sein und wird verwendet, um auf den entsprechenden Wert zuzugreifen. Wörterbücher werden mit geschweiften Klammern {} definiert, wobei jedes Schlüssel-Wert-Paar durch einen Doppelpunkt : getrennt ist.

## Example of a Python dictionary
person = {
    "name": "John Doe",
    "age": 35,
    "city": "New York"
}

Im obigen Beispiel hat das Wörterbuch person drei Schlüssel-Wert-Paare: "name" ist der Schlüssel und "John Doe" der entsprechende Wert; "age" ist der Schlüssel und 35 der entsprechende Wert; und "city" ist der Schlüssel und "New York" der entsprechende Wert.

Zugriff auf Wörterbuchelemente

Sie können die Werte in einem Wörterbuch mithilfe ihrer entsprechenden Schlüssel zugreifen. Dies geschieht, indem Sie den Schlüssel in eckigen Klammern [] hinter dem Namen des Wörterbuchs angeben.

## Accessing dictionary elements
print(person["name"])  ## Output: "John Doe"
print(person["age"])   ## Output: 35
print(person["city"])  ## Output: "New York"

Hinzufügen, Ändern und Entfernen von Elementen

Wörterbücher sind veränderlich (mutable), was bedeutet, dass Sie Schlüssel-Wert-Paare nach Bedarf hinzufügen, ändern und entfernen können.

## Adding a new key-value pair
person["email"] = "[email protected]"

## Modifying an existing value
person["age"] = 36

## Removing a key-value pair
del person["city"]

Iterieren über Wörterbücher

Sie können über die Schlüssel, Werte oder beide Schlüssel-Wert-Paare in einem Wörterbuch mithilfe verschiedener Methoden iterieren.

## Iterating over keys
for key in person:
    print(key)

## Iterating over values
for value in person.values():
    print(value)

## Iterating over key-value pairs
for key, value in person.items():
    print(f"{key}: {value}")

Das Verständnis der grundlegenden Konzepte und der Verwendung von Python-Wörterbüchern ist entscheidend für die effektive Behandlung und Fehlerbehebung von KeyError-Problemen, die wir im nächsten Abschnitt untersuchen werden.

Identifizieren und Behandeln von KeyError

Was ist ein KeyError?

Ein KeyError ist eine Ausnahme (Exception), die auftritt, wenn Sie versuchen, auf einen Schlüssel in einem Wörterbuch (dictionary) zuzugreifen, der nicht existiert. Dies kann passieren, wenn Sie einen Schlüssel falsch schreiben, versuchen, auf einen Schlüssel zuzugreifen, der zuvor entfernt wurde, oder versuchen, auf einen Schlüssel zuzugreifen, der nie dem Wörterbuch hinzugefügt wurde.

## Example of a KeyError
person = {
    "name": "John Doe",
    "age": 35,
    "city": "New York"
}

print(person["address"])  ## KeyError: 'address'

Im obigen Beispiel versucht der Code, auf den Schlüssel "address" zuzugreifen, der nicht im person-Wörterbuch existiert, was zu einem KeyError führt.

Behandeln von KeyError

Um KeyError-Ausnahmen zu behandeln, können Sie mehrere Ansätze verfolgen:

  1. Try-Except-Block:

    try:
        print(person["address"])
    except KeyError:
        print("The 'address' key does not exist in the dictionary.")
  2. get()-Methode:

    address = person.get("address", "Address not found")
    print(address)  ## Output: "Address not found"

    Die get()-Methode ermöglicht es Ihnen, einen Standardwert anzugeben, der zurückgegeben wird, wenn der Schlüssel nicht gefunden wird.

  3. dict.get() mit Bedingung:

    if "address" in person:
        print(person["address"])
    else:
        print("The 'address' key does not exist in the dictionary.")

    Dieser Ansatz überprüft zunächst, ob der Schlüssel im Wörterbuch existiert, bevor versucht wird, darauf zuzugreifen.

  4. defaultdict:

    from collections import defaultdict
    
    person = defaultdict(lambda: "Address not found")
    person["name"] = "John Doe"
    person["age"] = 35
    person["city"] = "New York"
    
    print(person["address"])  ## Output: "Address not found"

    Die defaultdict-Klasse aus dem collections-Modul ermöglicht es Ihnen, einen Standardwert für fehlende Schlüssel anzugeben, wodurch die Notwendigkeit einer expliziten Fehlerbehandlung entfällt.

Indem Sie diese Techniken verstehen und anwenden, können Sie KeyError-Ausnahmen effektiv behandeln und sicherstellen, dass Ihr Code fehlende Wörterbuchschlüssel elegant verarbeitet.

Best Practices zur Vermeidung von KeyError

Um KeyError-Probleme in Ihrem Python-Code proaktiv zu vermeiden, sollten Sie die folgenden Best Practices beachten:

Verwenden Sie die get()-Methode

Wie im vorherigen Abschnitt erwähnt, ist die get()-Methode ein leistungsstarkes Werkzeug zur Behandlung fehlender Schlüssel in Wörterbüchern (dictionaries). Sie ermöglicht es Ihnen, einen Standardwert anzugeben, der zurückgegeben wird, wenn der Schlüssel nicht gefunden wird, wodurch die Notwendigkeit einer expliziten Fehlerbehandlung entfällt.

person = {
    "name": "John Doe",
    "age": 35,
    "city": "New York"
}

address = person.get("address", "Address not found")
print(address)  ## Output: "Address not found"

Überprüfen Sie die Existenz des Schlüssels vor dem Zugriff

Ein anderer effektiver Ansatz besteht darin, zu überprüfen, ob ein Schlüssel im Wörterbuch existiert, bevor Sie versuchen, darauf zuzugreifen. Sie können den in-Operator verwenden, um diese Überprüfung durchzuführen.

person = {
    "name": "John Doe",
    "age": 35,
    "city": "New York"
}

if "address" in person:
    print(person["address"])
else:
    print("The 'address' key does not exist in the dictionary.")

Verwenden Sie defaultdict aus collections

Die defaultdict-Klasse aus dem collections-Modul kann eine gute Alternative zur Behandlung fehlender Schlüssel sein. Sie ermöglicht es Ihnen, einen Standardwert für jeden fehlenden Schlüssel anzugeben, wodurch die Notwendigkeit einer expliziten Fehlerbehandlung effektiv entfällt.

from collections import defaultdict

person = defaultdict(lambda: "Address not found")
person["name"] = "John Doe"
person["age"] = 35
person["city"] = "New York"

print(person["address"])  ## Output: "Address not found"

Dokumentieren und kommunizieren Sie die erwarteten Schlüssel

Dokumentieren Sie deutlich die erwarteten Schlüssel in Ihren Wörterbüchern und kommunizieren Sie diese Informationen an andere Entwickler, die an demselben Codebase arbeiten. Dies kann helfen, unbeabsichtigte KeyError-Probleme zu vermeiden und die Wartbarkeit des Codes zu verbessern.

Indem Sie diese Best Practices umsetzen, können Sie KeyError-Ausnahmen effektiv vermeiden und sicherstellen, dass Ihr Python-Code robuster und zuverlässiger ist.

Zusammenfassung

Am Ende dieses Tutorials werden Sie Python-Wörterbücher (dictionaries) gut verstehen und wissen, wie Sie KeyError effektiv behandeln können. Sie werden Techniken lernen, um diesen Fehler zu identifizieren und zu beheben, sowie Best Practices kennen, um sicherzustellen, dass Ihr Python-Code robuster und fehlerresistenter ist. Das Beherrschen dieser Fähigkeiten wird Ihre Python-Programmierfähigkeiten verbessern und Ihnen helfen, zuverlässigeren und wartbareren Code zu schreiben.