In diesem Tutorial lernen Sie die Verwendung Versäumnis aus dem Collections-Modul von Python – um KeyErrors besser handhaben zu können – bei der Arbeit mit Python-Wörterbüchern.
In Python ist ein Wörterbuch eine leistungsstarke integrierte Datenstruktur, die Daten in Schlüssel-Wert-Paaren speichert. Sie verwenden die Tasten, um auf das Wörterbuch zuzugreifen und auf die Werte zuzugreifen.
Wenn Sie jedoch mehrere Wörterbücher in Ihrem Python-Skript haben, die während der Codeausführung geändert werden, treten häufig KeyErrors auf. Und es gibt verschiedene Möglichkeiten, wie Sie damit umgehen können.
In diesem Tutorial lernen Sie:
- Was KeyErrors sind und warum sie auftreten
- Umgang mit KeyErrors
- So verwenden Sie Pythons defaultdict, eine Unterklasse, die von der integrierten dict-Klasse erbt, um fehlende Schlüssel besser zu handhaben
Lassen Sie uns beginnen!
What Are KeyErrors in Python?

Beim Definieren eines Python-Wörterbuchs sollten Sie Folgendes beachten:
- Die Schlüssel sollten einzigartig sein – ohne Wiederholung.
- Wenn Sie eine vorhandene Iterable als Schlüssel eines Wörterbuchs verwenden, sollten Sie die Verwendung von bevorzugen unveränderliche Sammlung wie ein Tupel.
Ein Schlüssel ist also nur gültig, wenn er im Wörterbuch vorhanden ist; andernfalls führt es zu KeyErrors.
Betrachten Sie das folgende Wörterbuch, books_authors
, wobei die Schlüssel die Namen der Bücher und die Werte die Namen der Autoren sind.
Sie können zusammen mit diesem Tutorial in a codieren Python-REPL.
books_authors = {
'Deep Work':'Cal Newport',
'Hyperfocus':'Chris Bailey',
'Pivot':'Jenny Blake',
'The Happiness Equation':'Neil Pasricha'
}
Mit dem Schlüssel (Name des Buches) können Sie auf den Namen des Autors zugreifen.
books_authors['Hyperfocus']
'Chris Bailey'
Um auf alle Schlüssel-Wert-Paare im Wörterbuch zuzugreifen, können Sie die aufrufen items()
-Methode für das Dictionary-Objekt, wie unten gezeigt:
for book,author in books_authors.items():
print(f"'{book}' by {author}")
'Deep Work' by Cal Newport
'Hyperfocus' by Chris Bailey
'Pivot' by Jenny Blake
'The Happiness Equation' by Neil Pasricha
Wenn Sie versuchen, auf den Wert eines Schlüssels zuzugreifen, der nicht im Wörterbuch vorhanden ist, löst der Python-Interpreter einen KeyError aus. Wir stoßen auf KeyError, wenn wir versuchen, auf den Wert von Schlüsseln zuzugreifen, die nicht existieren, nämlich „Grit“ und „nicht vorhandener Schlüssel“.
books_authors['Grit']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-6-e1a4486f5ced> in <module>
----> 1 books_authors['Grit']
KeyError: 'Grit'
books_authors['non-existent-key']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-7-a3efd56f69e5> in <module>
----> 1 books_authors['non-existent-key']
KeyError: 'non-existent-key'
Wie gehen Sie also mit KeyErrors in Python um?
Es gibt einige Möglichkeiten, dies zu tun, und wir werden sie im nächsten Abschnitt kennenlernen.
How to Handle KeyErrors in Python

Lassen Sie uns lernen, wie man mit KeyErrors umgeht:
- If-else-Bedingungsanweisungen
- Try-außer-Blöcke
- Die Wörterbuchmethode
.get()
#1. Verwenden von If-Else-Bedingungsanweisungen
Eine der einfachsten Möglichkeiten, KeyErrors in Python zu handhaben, ist die Verwendung der if-else-Bedingungsanweisungen.
In Python haben if-else-Anweisungen die folgende allgemeine Syntax:
if condition:
# do this
else:
# do something else
- Wenn die Bedingung ist
True
, die Aussagen in derif
Körper hingerichtet werden, und - Wenn die Bedingung ist
False
, die Aussagen in derelse
Körper ausgeführt wird.
In diesem Beispiel soll geprüft werden, ob der Schlüssel im Wörterbuch vorhanden ist.
Wenn der Schlüssel im Wörterbuch vorhanden ist, wird die in
Betreiber wird zurückkehren True
, und wenn body ausgeführt wird, wird der entsprechende Wert ausgegeben.
key = 'The Happiness Equation'
if key in books_authors:
print(books_authors[key])
else:
print('Sorry, this key does not exist!')
# Output
# Neil Pasricha
Wenn der Schlüssel nicht im Wörterbuch vorhanden ist, wird die in
Operator kehrt zurück False
und else
Körper wird ausgeführt. Es druckt eine Meldung aus, dass der Schlüssel nicht vorhanden ist.
key = 'non-existent-key'
if key in books_authors:
print(books_authors[key])
else:
print('Sorry, this key does not exist!')
# Output
# Sorry, this key does not exist!
#2. Verwenden von Try-Except-Anweisungen

Eine weitere gängige Methode zur Behandlung von KeyError ist die Verwendung der try-except-Anweisungen in Python.
Lesen Sie den folgenden Codeblock durch:
key = 'non-existent-key'
try:
print(books_authors[key])
except KeyError:
print('Sorry, this key does not exist!')
- Dieses versuchen block versucht, den Wert abzurufen, der dem bereitgestellten Schlüssel entspricht.
- Wenn der Schlüssel nicht vorhanden ist, löst der Interpreter einen KeyError aus, der als Ausnahme innerhalb der behandelt wird nur nicht blockieren.
#3. Verwenden der .get()-Methode
In Python können Sie die integrierte Wörterbuchmethode .get() verwenden, um fehlende Schlüssel zu behandeln.
Die allgemeine Syntax zur Verwendung der
get()
Methode istdict.get(key,default_value)
woherdict
ist ein gültiges Dictionary-Objekt in Python.– Wenn der Schlüssel im Wörterbuch vorhanden ist, dann die
get()
Methode gibt den Wert zurück.
– Andernfalls wird der Standardwert zurückgegeben.
In diesem Beispiel keys
ist eine Liste von Schlüsseln, auf deren Werte wir zugreifen möchten. Wir durchlaufen die Schlüsselliste, um die entsprechenden Werte aus der abzurufen books_authors
Wörterbuch.
Hier haben wir die .get()-Methode mit „Does not exist“ als Standardwert verwendet.
keys = ['Grit','Hyperfocus','Make Time','Deep Work']
for key in keys:
print(books_authors.get(key,'Does not exist'))
Im obigen Code:
- Für Schlüssel, die in der vorhanden sind
books_authors
Wörterbuch, das.get()
-Methode gibt die entsprechenden Werte zurück. - Wenn die Schlüssel nicht existieren, in diesem Fall „Grit“ und „Make Time“, gibt die .get()-Methode den Standardwert „Does not exist“ zurück.
# Output
Does not exist
Chris Bailey
Does not exist
Cal Newport
Alle oben genannten Methoden helfen uns bei der Behandlung von Schlüsselfehlern. Sie sind jedoch ausführlich und erfordern, dass wir die fehlenden Schlüssel explizit behandeln. Sie können diesen Vorgang vereinfachen, indem Sie a verwenden Versäumnis anstelle eines normalen Wörterbuchs.
Defaultdict in Python

Das defaultdict ist eine Unterklasse des Wörterbuchs (dict
) Klasse. Es erbt also das Verhalten eines Python-Wörterbuchs. Darüber hinaus werden fehlende Schlüssel nativ verarbeitet.
Dieses Versäumnis ist ein Container-Datentyp, der in die Python-Standardbibliothek integriert ist – innerhalb der collections
Modul.
Sie müssen es also in Ihre Arbeitsumgebung importieren:
from collections import defaultdict
Hier ist die zu verwendende allgemeine Syntax defaultdict
:
defaultdict(default_factory)
Sie können eine aufrufbare Variable wie int, float oder list als angeben default_factory
Attribut. Wenn Sie keinen Wert für die angeben default_factory
, es ist standardmäßig None
.
Wenn der gesuchte Schlüssel nicht vorhanden ist, wird die __missing__()
-Methode wird ausgelöst und leitet den Standardwert aus der ab default_factory
. Es gibt dann diesen Standardwert zurück.
Zusammengefasst:
- In Python a
defaultdict
gibt den Standardwert zurück, wenn der Schlüssel nicht vorhanden ist. - Außerdem wird dieses Schlüssel-Standardwert-Paar zum Wörterbuch hinzugefügt, das Sie dann ändern können.
Python Defaultdict Examples

Als Nächstes programmieren wir einige Beispiele, um zu verstehen, wie Python defaultdict funktioniert.
Defaultdict in Python mit ganzzahligem Standardwert
Zuerst importieren defaultdict
von dem collections
Modul.
from collections import defaultdict
import random
Lassen Sie uns ein defaultdict erstellen prices
.
prices = defaultdict(int)
Wir bestücken jetzt die prices
Wörterbuch mit den Elementen der fruits
Liste als Schlüssel. Und wir nehmen nach dem Zufallsprinzip Stichproben von Werten aus der price_list
um die Werte zu bekommen.
price_list = [10,23,12,19,5]
fruits = ['apple','strawberry','pomegranate','blueberry']
for fruit in fruits:
prices[fruit] = random.choice(price_list)
Werfen wir einen Blick auf die Schlüssel-Wert-Paare in der prices
Versäumnis
print(prices.items())
dict_items([('apple', 12), ('blueberry', 19), ('pomegranate', 5), ('strawberry', 10)])
Wie bei einem normalen Python-Wörterbuch können Sie auf die Werte von zugreifen prices
defaultdict mit den Tasten:
prices['apple']
# 23
Lassen Sie uns nun versuchen, auf den Preis einer Frucht zuzugreifen, die nicht vorhanden ist, sagen wir „Orange“. Wir sehen, dass es die zurückgibt Standard Wert von Null.
prices['orange']
# 0
Wenn wir das Wörterbuch ausdrucken, sehen wir, dass ein neuer Schlüssel „Orange“ mit dem standardmäßigen ganzzahligen Wert Null hinzugefügt wurde.
print(prices.items())
dict_items([('apple', 12), ('blueberry', 19), ('pomegranate', 5), ('strawberry', 10), ('orange', 0)])
Defaultdict in Python mit List als Standardwert
Lassen Sie uns definieren students_majors
als ein defaultdict
von Listen. Die Namen der Majors sind die Schlüssel. Und die Werte sind die Listen der Studenten, die jedes der Hauptfächer belegen, z. B. Mathematik, Wirtschaftswissenschaften, Informatik und mehr.
from collections import defaultdict
students_majors = defaultdict(list)
Wenn wir versuchen, auf die Studentenliste zuzugreifen, die 'Economics' entspricht, gibt defaultdict eine leere Liste zurück; keine Tastenfehler!
students_majors['Economics']
# []
Wir haben jetzt eine leere Liste, die dem Hauptfach „Wirtschaft“ zugeordnet ist. Wir können dieser Liste nun Elemente hinzufügen, indem wir die list-Methode verwenden .append()
.
students_majors['Economics'].append('Alex')
Für „Wirtschaft“ wurde ein Eintrag im erstellt students_majors
Standardwörterbuch.
print(students_majors)
defaultdict(<class 'list'>, {'Economics': ['Alex']})
Sie können der Liste weitere Studenten hinzufügen, die dem Hauptfach Wirtschaftswissenschaften zugeordnet sind, ein neues Hauptfach hinzufügen und vieles mehr!
students_majors['Economics'].append('Bob')
students_majors['Math'].append('Laura')
print(students_majors)
defaultdict(<class 'list'>, {'Economics': ['Alex', 'Bob'], 'Math': ['Laura']})
Fazit
Ich hoffe, dieses Tutorial hat Ihnen geholfen zu verstehen, wie und wann Sie es verwenden sollten Versäumnis in Python. Nachdem Sie die Codebeispiele in diesem Lernprogramm ausgeführt haben, können Sie bei Bedarf versuchen, defaultdict als bevorzugte Datenstruktur in Ihren Projekten zu verwenden.
Hier ist eine Zusammenfassung dessen, was Sie in diesem Tutorial gelernt haben.
- Bei der Arbeit mit einem Python-Wörterbuch werden Sie häufig auf KeyErrors stoßen.
- Um solche KeyErrors zu behandeln, können Sie einige ausführliche Methoden verwenden. Sie können bedingte Anweisungen, try-außer-Blöcke oder die Methode .get() verwenden. Aber der defaultdict-Datentyp im collections-Modul kann diese KeyError-Behandlung vereinfachen.
- Sie können verwenden defaultdict(default_factory) woher default_factory ist ein gültiges Callable.
- Wenn der Schlüssel nicht im defaultdict vorhanden ist, wird der Standardwert (abgeleitet von default_factory) und der Schlüssel wird zum defaultdict hinzugefügt.
Als nächstes sehen Sie sich das Tutorial an Python-Map-Funktion.