Pytonorm

Python defaultdict

Python defaultdict

Python erbjuder många inbyggda datastrukturer, såsom listor, tuplar och ordböcker, för att spara och hantera data effektivt. Ordböcker är ett enkelt sätt att spara data som nyckel-värdepar. En nyckel fungerar som ett index och används för att hämta data. Nycklarna bör vara unika och oföränderliga i hela ordboken. Nycklar är mestadels strängar och heltal, även om värdet på en nyckel kan vara av vilken typ som helst, såsom ett heltal, sträng, flytpunktsnummer eller komplext tal. Under tiden kan en ordbok innehålla en samling, såsom en lista, tupel eller någon annan typ av ordbok. En ordbok i Python skapas med hjälp av ett par lockiga parenteser, där varje nyckel-värdepar avgränsas med ett komma.

Vad händer om du försöker komma åt eller ändra en viss nyckel i en ordlista som inte finns? Tja, i det här fallet kommer Python-tolk att höja "KeyError" -felet och avsluta körningen av programmet.

Låt oss titta på ett exempel på “KeyError” -felet.

# skapa en ordbok
my_dict = 1: "Hej", 2: "Välkommen", 3: "LinuxHint"
#åtkomst till en nyckel som inte finns
min_dict [4]

Produktion

För att hantera detta fel tillhandahåller Python defaultdict-typen, en ordboksklass som finns i samlingsmodulen. Den här artikeln täcker Pythons standarddikt i detalj.

Förklaring och exempel på defaultdict

Standarddict är alternativet för Python-ordlistan. Den returnerar objekt av ordbokstyp. Standarddict är en underklass av dict. I fallet med en saknad nyckel, snarare än att lyfta upp ett "KeyError" -fel, anges standardvärdet för den obefintliga nyckeln. Syntaxen för defaultdict är som följer:

defaultdict (default_factory)

Standarddict-funktionen tar parametern default_factory som ett argument. Funktionen default_factory returnerar standardvärdet för den definierade defaultdict. Om vi ​​försöker komma åt eller ändra en nyckel som saknas, returnerar funktionen default_factory standardvärdet som resultat. Om standardfabriksfunktionen saknas, kommer standarddic att lyfta upp ett "KeyError" -fel om det saknas tangenter.

Först implementerar vi en defaultdic i vårt Python-skript för att komma åt både befintliga och saknade nycklar.

#importera defaultdict från samlingsmodulen
från samlingar importerar standarddikt
#definiera en funktion för att returnera standardvärdet
def my_func ():
skriv ut ("Nyckeln är inte definierad")
#creating a defualtdict
# passerar my_func () som ett argument till defaultdict
my_dict = defaultdict (my_func)
#definiera nycklar och värden
my_dict [1] = "Hej"
my_dict [2] = "Välkommen"
my_dict [3] = "LinuxTips"
#åtkomst av värdena med hjälp av tangenter
skriv ut (min_dikt [1])
skriv ut (min_dikt [2])
skriv ut (min_dikt [3])
#accessing the missing or not defined key
my_dict [4]

Produktion

[4] är den saknade nyckeln. Så istället för att ta upp ett “KeyError” -fel, kallar det funktionen default_factory, som returnerar standardvärdet.


En lambda-funktion, känd som en anonym funktion, kan också användas som parametern default_factory.

Därefter implementerar vi en lambda-funktion och skickar den som ett argument till defaultdict.

#importera defaultdict från samlingsmodulen
från samlingar importerar standarddikt
#creating a defualtdict
# passerar Lamnda-funktionen som ett argument för defaultdict
my_dict = defaultdict (lambda: "Nyckeln är inte definierad")
#definiera nycklar och värden
my_dict [1] = "Hej"
my_dict [2] = "Välkommen"
my_dict [3] = "LinuxTips"
#åtkomst av värdena med hjälp av tangenter
skriv ut (min_dikt [1])
skriv ut (min_dikt [2])
skriv ut (min_dikt [3])
#accessing the missing or not defined key
skriv ut (min_dikt [4])

Standarddict anropar standardfabriken för att tillhandahålla standardvärdet, men funktionen __missing () __ ger standardvärdet. Funktionen __missing () __ är en inbyggd funktion i Python som tar parametern default_factory som ett argument. Om parametern default_factory inte är definierad höjer funktionen __missing () __ “KeyError” -felet.

Här använder vi funktionen __missing () __ i vårt Python-skript.

#importera defaultdict från samlingsmodulen
från samlingar importerar standarddikt
#definiera en funktion för att returnera standardvärdet
def my_func ():
skriv ut ("Nyckeln är inte definierad")
#creating a defualtdict
# passerar my_func () som ett argument till defaultdict
my_dict = defaultdict (my_func)
#definiera nycklar och värden
my_dict [1] = "LinuxTips"
#åtkomst av värdena med hjälp av tangenter
skriv ut (min_dikt [1])
#accessing the missing or not defined key
min_dikt.__missar __ (2)

Produktion

Listan och int-klasserna kan också användas som standardfabriksparametrar med defaultdict.

Lista som standard_fabrik Parameter

Defaultdict skapas med listvärdena när listklassen skickas en default_factory-parameter.

#importera defaultdict från samlingsmodulen
från samlingar importerar standarddikt
# definierar en standarddikt
# passerar listklass som standardfabrik
my_dict = defaultdict (lista)
för jag inom intervallet (7):
min_dict [i].bifoga (i)
# skriva ut värdena
skriv ut (min_dikt)

Produktion

Utgången visar värdena i listan. Som du kan se har en standarddikt som innehåller nyckel och värden skapats.

Heltals som standardfabrik Parameter

Om vi ​​skickar int-klassen som en standardfabriksparameter kan vi skapa en standarddikt som bara innehåller heltal. Vi kommer att skapa en lista med heltal och sedan spara den till defaultdict.

#importera defaultdict från samlingsmodulen
från samlingar importerar standarddikt
# definierar en standarddikt
# passerar int-klass som standardfabrik
my_dict = defaultdict (int)
# skapar en lista med heltal
min_list = [1,2,3]
för jag i min_lista:
min_dict [i] + = 1
#utskrift av värdena
skriv ut (min_dikt)

Produktion

I den givna utgången är heltalets värden före kolon (:) nycklar, medan helvärdena efter kolon är värden.

Slutsats

Dafualtdict är en ordboksliknande klass som finns i samlingsmodulen. Det fungerar som en Python-ordlista men lyfter inte upp en "KeyError" när en nyckel inte hittas. Den här artikeln förklarar standarddict i detalj med olika exempel.

Mus Omforma dina musknappar på olika sätt för olika program med X-Mouse Button Control
Omforma dina musknappar på olika sätt för olika program med X-Mouse Button Control
Kanske behöver du ett verktyg som kan göra att musens kontroll ändras med alla applikationer som du använder. Om så är fallet kan du prova en ansökan ...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jag har nyligen läst om Microsoft Sculpt Touch trådlös mus och bestämde mig för att köpa den. Efter att ha använt den ett tag bestämde jag mig för att...
Mus AppyMouse styrplatta och muspekare för Windows-surfplattor
AppyMouse styrplatta och muspekare för Windows-surfplattor
Surfplattanvändare saknar ofta muspekaren, särskilt när de brukar använda bärbara datorer. Pekskärmen Smartphones och surfplattor har många fördelar o...