Verwendung von defaultdict in Python
-
defaultdict
vs.dict
in Python -
das
defaultdict
in Python -
Nützliche Funktionen des
defaultdict
in Python
Der heutige Artikel geht auf den Container defaultdict
ein und demonstriert seine Verwendung anhand von Codebeispielen.
defaultdict
vs. dict
in Python
Das defaultdict
ist ein Container wie ein Wörterbuch, das zum Collections-Modul gehört. Es ist eine Unterklasse des Wörterbuchs; daher hat es alle Funktionalitäten von Wörterbuch
. Der einzige Zweck von defaultdict
ist jedoch die Behandlung des KeyError
.
# return true if the defaultdict is a subclass of dict (dictionary)
from collections import defaultdict
print(issubclass(defaultdict, dict))
Ausgang:
True
Angenommen, ein Benutzer sucht einen Eintrag im Wörterbuch
, und der gesuchte Eintrag existiert nicht. Bei den gewöhnlichen Wörterbüchern wird ein KeyError
ausgegeben, was bedeutet, dass der Eintrag nicht existiert. Um dieses Problem zu lösen, präsentierten die Python-Entwickler das Konzept von defaultdict
.
Codebeispiel:
# normal dictionary
ord_dict = {"x": 3, "y": 4}
ord_dict["z"] # --> KeyError
Ausgang:
KeyError: 'z'
Das gewöhnliche Wörterbuch kann mit unbekannten Schlüsseln
nicht umgehen und löst KeyError
aus, wenn wir nach einem unbekannten Schlüssel
suchen, wie im obigen Code gezeigt.
Das Modul defaultdict
hingegen funktioniert ähnlich wie Python-Wörterbücher. Dennoch verfügt es über fortschrittliche, hilfreiche und benutzerfreundliche Funktionen und gibt keinen Fehler aus, wenn ein Benutzer nach einem nicht definierten Schlüssel im Wörterbuch sucht.
Stattdessen erstellt es einen Eintrag im Wörterbuch und gibt einen Standardwert für den Schlüssel
zurück. Um dieses Konzept zu verstehen, schauen wir uns den praktischen Teil unten an.
Codebeispiel:
from collections import defaultdict
# the default value for the undefined key
def def_val():
return "The searched Key Not Present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
# search 'z' in the dictionary 'dic'
print(dic["z"]) # instead of a KeyError, it has returned the default value
print(dic.items())
Ausgang:
The searched Key Not Present
dict_items([('x', 3), ('y', 4), ('z', 'The searched Key Not Present')])
Das defaultdict
erstellt alle Elemente, auf die wir versuchen, mit dem Schlüssel zuzugreifen, der im Wörterbuch nicht definiert ist.
Und erstellen Sie ein solches Standard
-Element, es ruft das Funktionsobjekt auf, das wir an den Konstruktor des defaultdict
übergeben, und um genauer zu sein, das Objekt sollte ein aufrufbares
Objekt sein, das Typobjekte und Funktionen enthält.
Im obigen Beispiel werden die Standardelemente mit der Funktion def_val
erstellt, die eine Zeichenfolge Der gesuchte Schlüssel nicht vorhanden
gegen den undefinierten Schlüssel im Wörterbuch zurückgibt.
das defaultdict
in Python
Die default_factory
ist das erste Argument für den defaultdict
-Konstruktor, der von der __missing__()
-Methode verwendet wird, und wenn das Argument des Konstruktors fehlt, wird die default_factory
als None
initialisiert, was der Fall ist kommt der KeyError
.
Und wenn die default_factory
mit etwas anderem als None
initialisiert wird, wird sie einem gesuchten Schlüssel
als Wert
zugewiesen, wie in einem Beispiel oben zu sehen ist.
Nützliche Funktionen des defaultdict
in Python
Es gibt unzählige Funktionen von dictionary
und defaultdict
. Wie wir wissen, hat defaultdict
Zugriff auf alle Funktionen von dictionary
; Dies sind jedoch einige der nützlichsten Funktionen von defaultdict
.
defaultdict.clear()
in Python
Codebeispiel:
from collections import defaultdict
# the default value for the undefined key
def def_val():
return "Not Present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
print(f'Before clearing the dic, values of x = {dic["x"]} and y = {dic["y"]}')
dic.clear() # dic.clear() -> None. it will remove all items from dic.
print(f'After clearing the dic, values of x = {dic["x"]} and y = {dic["y"]}')
Ausgang:
Before clearing the dic, values of x = 3 and y = 4
After clearing the dic, values of x = Not Present and y = Not Present
Wie wir im obigen Beispiel sehen, haben wir zwei Datenpaare im Wörterbuch dic
, wobei x=3
und y=4
. Nach der Verwendung der Funktion clear()
wurden jedoch Daten entfernt, und die Werte von x
und y
existieren nicht mehr, und deshalb erhalten wir Nicht vorhanden
gegen x
und y
.
defaultdict.copy()
in Python
Codebeispiel:
from collections import defaultdict
# the default value for the undefined key
def def_val():
return "Not Present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
dic_copy = dic.copy() # dic.copy will give you a shallow copy of dic.
print(f"dic = {dic.items()}")
print(f"dic_copy = {dic_copy.items()}")
Ausgang:
dic = dict_items([('x', 3), ('y', 4)])
dic_copy = dict_items([('x', 3), ('y', 4)])
Die Funktion defaultdict.copy()
wird verwendet, um eine flache Kopie des Wörterbuchs in eine andere Variable zu kopieren, die wir entsprechend verwenden können.
defaultdict.default_factory()
in Python
Codebeispiel:
from collections import defaultdict
# the default value for the undefined key
def def_val():
return "Not present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
print(f"The value of z = {dic['Z']}")
print(
dic.default_factory()
) # default_factory returns the default value for defaultdict.
Ausgang:
The value of z = Not present
Not present
Die Funktion default_factory()
wird verwendet, um Standardwerte für die Attribute einer definierten Klasse bereitzustellen, und im Allgemeinen sind die Werte von default_factory
die Werte, die von einer Funktion zurückgegeben werden.
defaultdict.get(Schlüssel, Standardwert)
in Python
Codebeispiel:
from collections import defaultdict
# the default value for the undefined key
def def_val():
return "Not present"
dic = defaultdict(def_val)
dic["x"] = 3
dic["y"] = 4
# search the value of Z in the dictionary dic; if it exists, return the value; otherwise, display the message
print(dic.get("Z", "Value doesn't exist")) # default value is None
Ausgang:
Value doesn't exist
Die Funktion defaultdict.get()
nimmt zwei Argumente, erstens den Schlüssel und zweitens den Standardwert gegen den Schlüssel, falls der Wert nicht existiert.
Aber das zweite Argument ist optional. Wir können also jede Nachricht oder jeden Wert angeben; andernfalls wird None
als Standardwert angezeigt.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn