Ordbog i Python er en uordnet samling af dataværdier, der bruges til at gemme dataværdier som et kort. I modsætning til andre datatyper, der kun har en enkelt værdi som et element, indeholder ordbogen nøgleværdi-par. I ordbog skal nøglen være unik og uforanderlig. Dette betyder, at en Python Tuple kan være en nøgle, mens en Python List ikke kan. En ordbog kan oprettes ved at placere en sekvens af elementer inden for krøllede {} klammeparenteser, adskilt af 'komma'.
Eksempel:
Python3
# Python program to demonstrate> # dictionary> > > Dict> => {>1>:>'Geeks'>,>2>:>'For'>,>3>:>'Geeks'>}> print>(>'Dictionary:'>)> print>(>Dict>)> print>(>Dict>[>1>])> > # Uncommenting this print(Dict[4])> # will raise a KeyError as the> # 4 is not present in the dictionary> |
>
>
Produktion:
Dictionary: {1: 'Geeks', 2: 'For', 3: 'Geeks'} Geeks> Traceback (most recent call last): File '/home/1ca83108cc81344dc7137900693ced08.py', line 11, in print(Dict[4]) KeyError: 4>
Nogle gange, når KeyError er rejst, kan det blive et problem. For at overvinde dette introducerer Python en anden ordbog som container kendt som Defaultdict som er til stede inde i samlingsmodulet.
Bemærk: For mere information, se Python ordbog .
DefaultDict
Defaultdict er en container lignende ordbøger til stede i modulet samlinger . Defaultdict er en underklasse af ordbogsklassen, der returnerer et ordbogslignende objekt. Funktionaliteten af både ordbøger og defaultdict er næsten den samme bortset fra det faktum, at defaultdict aldrig rejser en KeyError. Det giver en standardværdi for nøglen, der ikke findes.
Syntaks: defaultdict(default_factory)
Parametre:java listeboksdefault_factory: En funktion, der returnerer standardværdien for den definerede ordbog. Hvis dette argument er fraværende, rejser ordbogen en KeyError.
Eksempel:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Function to return a default> # values for keys that is not> # present> def> def_value():> >return> 'Not Present'> > # Defining the dict> d>=> defaultdict(def_value)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > print>(d[>'a'>])> print>(d[>'b'>])> print>(d[>'c'>])> |
>
>
Produktion:
1 2 Not Present>
Indre Arbejde af defaultdict
Defaultdict tilføjer én skrivbar instansvariabel og én metode ud over standardordbogsoperationerne. Forekomstvariablen er parameteren default_factory, og den angivne metode er __missing__.
- Default_factory: Det er en funktion, der returnerer standardværdien for den definerede ordbog. Hvis dette argument er fraværende, rejser ordbogen en KeyError.
Eksempel:
Python3
# Python program to demonstrate> # default_factory argument of> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict and passing> # lambda as default_factory argument> d>=> defaultdict(>lambda>:>'Not Present'>)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > print>(d[>'a'>])> print>(d[>'b'>])> print>(d[>'c'>])> |
>
>
Produktion:
1 2 Not Present>
- __missing__(): Denne funktion bruges til at angive standardværdien for ordbogen. Denne funktion tager default_factory som et argument, og hvis dette argument er None, opstår en KeyError ellers giver den en standardværdi for den givne nøgle. Denne metode kaldes grundlæggende af __getitem__() metoden i dict-klassen, når den anmodede nøgle ikke findes. __getitem__() hæver eller returnerer værdien returneret af __missing__(). metode.
Eksempel:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict> d>=> defaultdict(>lambda>:>'Not Present'>)> d[>'a'>]>=> 1> d[>'b'>]>=> 2> > # Provides the default value> # for the key> print>(d.__missing__(>'a'>))> print>(d.__missing__(>'d'>))> |
>
>
Produktion:
Not Present Not Present>
Brug af List som default_factory
Når listeklassen videregives som default_factory-argumentet, oprettes et defaultdict med de værdier, der er liste.
Eksempel:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining a dict> d>=> defaultdict(>list>)> > for> i>in> range>(>5>):> >d[i].append(i)> > print>(>'Dictionary with values as list:'>)> print>(d)> |
>
>
Produktion:
Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})> Bruger int som default_factory
Når int-klassen videregives som default_factory-argumentet, oprettes et defaultdict med standardværdien nul.
Eksempel:
Python3
# Python program to demonstrate> # defaultdict> > > from> collections>import> defaultdict> > > # Defining the dict> d>=> defaultdict(>int>)> > L>=> [>1>,>2>,>3>,>4>,>2>,>4>,>1>,>2>]> > # Iterate through the list> # for keeping the count> for> i>in> L:> > ># The default value is 0> ># so there is no need to> ># enter the key first> >d[i]>+>=> 1> > print>(d)> |
>
>
Produktion:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})>