Die Programmiersprache Python enthält viele nützliche Datenstrukturen, die die Arbeit mit verschiedenen Arten von Informationen erleichtern. Ein solches Werkzeug ist die defaultdict-Klasse aus dem collections-Modul. Mit dieser Klasse können Sie Wörterbücher mit voreingestellten Werten erstellen, was die Arbeit mit Daten vereinfacht und Fehler verhindert.
Die defaultdict-Klasse ist eine Unterklasse eines normalen Dict-Wörterbuchs, aber mit einem wichtigen Unterschied können Sie einen Standardwert für Schlüssel definieren, die noch nicht im Wörterbuch enthalten sind. Wenn also auf einen fehlenden Schlüssel zugegriffen wird, erstellt defaultdict automatisch einen neuen Eintrag mit dem voreingestellten Wert. Dies ist sehr praktisch, wenn Sie Werte eines bestimmten Datentyps speichern oder vermeiden müssen, manuell nach Schlüsseln zu suchen und sie dem Wörterbuch hinzuzufügen.
Die Verwendung von defaultdict ist einfach und bequem. Zuerst müssen Sie das collections-Modul importieren und dann ein defaultdict-Objekt erstellen. Der Konstruktor akzeptiert eine Funktion als Argument, das den Standardwert angibt. Das resultierende Objekt kann genau wie ein normales Wörterbuch verwendet werden, wobei nur der Unterschied besteht, dass bei der Abfrage eines Werts für einen fehlenden Schlüssel der beim Erstellen des Objekts definierte Wert zurückgegeben wird.
Darüber hinaus können Sie bei Verwendung von defaultdict den Standardwert für jeden neuen Schlüssel als Ergebnis der Funktionsausführung definieren. Die Verwendung der Funktion ermöglicht eine größere Flexibilität und Kontrolle beim Arbeiten mit Werten, was defaultdict zu einem unverzichtbaren Werkzeug für viele Aufgaben in Python macht.
Wie verwende ich defaultdict in Python
Um mit der Verwendung von defaultdict zu beginnen, müssen Sie es aus dem collections-Modul importieren:
from collections import defaultdict
Sie können dann eine defaultdict-Instanz erstellen, indem Sie den Standardwert angeben:
d = defaultdict(int)
In diesem Beispiel wird das int-Argument verwendet, um den Standardwert auf Null zu setzen. Sie können jedoch einen beliebigen Wert oder sogar eine Funktion als Argument verwenden.
Zu den grundlegenden defaultdict-Methoden gehören:
- default_factory ist eine Funktion oder Klasse, die zum Erstellen von Standardwerten verwendet werden soll.
- __missing__(key) ist eine Methode, die aufgerufen wird, wenn auf einen nicht vorhandenen Schlüssel zugegriffen wird.
Beispiel für die Verwendung von defaultdict:
from collections import defaultdictd = defaultdict(int)d['apple'] = 5d['banana'] = 3
In diesem Beispiel gibt der Zugriff mit den Schlüsseln 'apple' und 'banana' die entsprechenden Werte zurück, die explizit festgelegt wurden. Wenn Sie jedoch mit dem Schlüssel 'orange' zugreifen, verwendet das Wörterbuch den Standardwert, der beim Erstellen des defaultdict festgelegt wurde, und gibt Null zurück.
Defaultdict ist sehr nützlich, wenn Sie neue Schlüssel im Wörterbuch automatisch initialisieren müssen und nicht jedes Mal überprüfen möchten, ob sie vorhanden sind.
Was ist defaultdict?
Wenn Sie auf einen Schlüssel zugreifen, der nicht im Wörterbuch enthalten ist, erstellt defaultdict diesen Schlüssel automatisch mit einem Standardwert, der beim Initialisieren von defaultdict festgelegt werden kann. Auf diese Weise können Sie mit defaultdict ein Wörterbuch verwenden, ohne sich Gedanken darüber machen zu müssen, ob ein Schlüssel vor dem Zugriff auf seinen Wert vorhanden ist.
Die defaultdict-Klasse ähnelt einem normalen Wörterbuch (dict) mit ihren keys() -, values()-, items() - und anderen Methoden. defaultdict hat jedoch ein zusätzliches Argument bei der Initialisierung - eine Factory-Funktion, die aufgerufen wird, um Aktionen auszuführen, wenn auf einen neuen Schlüssel zugegriffen wird. Dieses Standardargument kann eine Funktion, eine Klasse oder ein anderes aufgerufenes Objekt sein.
DefaultDict kann besonders nützlich sein, wenn wir mit der Analyse von Textdaten arbeiten, wo wir viele eindeutige Wörter haben können und bequemen Zugriff auf die Wortzähler benötigen.
Wie importiere ich defaultdict
Um die defaultdict-Klasse in Python zu verwenden, müssen Sie sie aus dem collections-Modul importieren. Wenden Sie dazu die folgende Anweisung am Anfang Ihres Codes (oder Ihrer Datei) an:
| Import | Die Beschreibung |
|---|---|
| from collections import defaultdict | Importiert die defaultdict-Klasse aus dem collections-Modul. |
Nachdem Sie diese Anweisung ausgeführt haben, können Sie alle Funktionen der defaultdict-Klasse verwenden. Betrachten wir nun einige grundlegende Beispiele für die Verwendung von defaultdict.
Erstellen eines defaultdict
Um ein defaultdict zu erstellen, müssen Sie zuerst das collections-Modul importieren :
from collections import defaultdict
Sie können dann eine defaultdict-Instanz erstellen und die Standardfunktion oder den Standarddatentyp angeben:
d = defaultdict(int)
Wenn Sie in diesem Beispiel auf einen nicht vorhandenen Schlüssel verweisen, ist der Rückgabewert 0 .
Sie können auch eine andere Funktion angeben, z. B. list , um ein defaultdict zu erstellen, das für jeden fehlenden Schlüssel eine leere Liste zurückgibt:
d = defaultdict(list)
Wenn Sie nun auf einen nicht vorhandenen Schlüssel zugreifen, wird eine leere Liste zurückgegeben.
Im Allgemeinen können Sie durch das Erstellen eines defaultdict eine Standardfunktion oder einen Datentyp festlegen, der zurückgegeben wird, wenn auf fehlende Schlüssel zugegriffen wird.
Daher spart die Verwendung von defaultdict Zeit und vereinfacht den Code, indem überprüft wird, ob Schlüssel vorhanden sind.
Hinzufügen von Elementen zum defaultdict
Das Hinzufügen von Elementen zum defaultdict erfolgt mithilfe der __getitem__() -Methode. Wenn kein angeforderter Schlüssel im Wörterbuch vorhanden ist, startet defaultdict die Factory-Funktion (die beim Erstellen des defaultdict angegeben wurde) und gibt ein neues Wertobjekt zurück. Dieses Objekt wird im Wörterbuch gespeichert und an den angeforderten Schlüssel gebunden.
Betrachten Sie beispielsweise den folgenden Code, der defaultdict verwendet, um die Anzahl der Elemente in einer Liste zu zählen:
from collections import defaultdict# Создаем defaultdict с типом intcounter = defaultdict(int)names = ["Alice", "Bob", "Alice", "Charlie", "Bob", "Alice"]# Подсчитываем количество вхождений каждого имениfor name in names:counter[name] += 1print(counter) # defaultdict(, )
In diesem Beispiel wird ein leeres counter-Wörterbuch vom Typ int erstellt. Wenn auf einen nicht vorhandenen Schlüssel zugegriffen wird, ist der int-Wert 0. Dann wird die names-Liste durchlaufen und der counter-Wert für jeden Namen erhöht.
Als Ergebnis der Codeausführung erhalten wir ein defaultdict, bei dem Schlüssel Namen sind und Werte die Anzahl der Vorkommen jedes Namens in der names-Liste sind.
Abrufen von Werten aus defaultdict
Das collections-Modul in Python stellt die defaultdict-Klasse bereit, die eine bequemere Möglichkeit bietet, mit Wörterbüchern zu arbeiten. Wenn wir jedoch Werte aus dem defaultdict extrahieren möchten, stellt sich die Frage, wie dies zu tun ist.
Wenn Sie defaultdict anstelle eines normalen Wörterbuchs verwenden, können wir eine KeyError-Ausnahme vermeiden, wenn auf einen nicht vorhandenen Schlüssel zugegriffen wird. Stattdessen erstellt defaultdict beim ersten Zugriff auf einen nicht vorhandenen Schlüssel automatisch einen leeren Wert für diesen Schlüssel unter Verwendung einer vordefinierten Factory-Funktion.
Um Werte aus dem defaultdict zu extrahieren, können wir mehrere Methoden verwenden:
- Verwenden des Indizierungsoperators []. Wenn wir beispielsweise ein defaultdict mit dem Namen d und dem Schlüssel k haben, können wir das folgende Konstrukt verwenden: d[k]. Wenn dieser Schlüssel nicht vorhanden ist, erstellt defaultdict automatisch einen leeren Wert und gibt ihn zurück.
- Verwenden der get() -Methode. Mit der get() -Methode können Sie einen Standardwert angeben, der zurückgegeben wird, wenn kein Schlüssel vorhanden ist. Zum Beispiel gibt d.get(k, default_value) default_value zurück, wenn der Schlüssel k im defaultdict d nicht existiert.
Das Abrufen von Werten aus dem defaultdict ist daher nicht schwierig. Abhängig von der Aufgabe können wir unter Berücksichtigung unserer Bedürfnisse eine geeignete Methode zum Abrufen von Werten aus dem defaultdict auswählen.
Nützliche Methoden für die Arbeit mit defaultdict
Die defaultdict-Methode.get(key, default=None)
Mit dieser Methode können Sie den Wert von defaultdict nach Schlüssel abrufen. Wenn ein Schlüssel vorhanden ist, gibt die Methode seinen Wert zurück, andernfalls gibt sie einen Standardwert zurück, der durch das zweite Argument angegeben werden kann. Wenn kein Standardwert angegeben wird, wird der bei der Erstellung des defaultdict angegebene Standardwert zurückgegeben.
Die defaultdict-Methode.pop(key, default=None)
Diese Methode entfernt den Wert aus dem defaultdict nach dem Schlüssel und gibt ihn zurück. Wenn der Schlüssel nicht existiert, löst die Methode im Gegensatz zu einem normalen Wörterbuch keinen KeyError-Fehler aus, sondern gibt einen Standardwert zurück. Wenn kein Standardwert angegeben wird, wird der bei der Erstellung des defaultdict angegebene Standardwert zurückgegeben.
Diese Methode entfernt und gibt ein Paar (Schlüssel, Wert) aus dem defaultdict zurück. Wenn defaultdict leer ist, löst die Methode einen KeyError-Fehler aus.
Diese Methode entfernt alle defaultdict-Elemente und macht sie leer.
Die Verwendung dieser Methoden kann die Arbeit mit defaultdict erheblich vereinfachen, indem wir Werte sofort abrufen und löschen können, indem wir nach einem Schlüssel suchen und Standardwerte angeben, ohne dass Bedingungen oder Ausnahmen erforderlich sind.