Woordenboek in Python is een ongeordende verzameling gegevenswaarden die worden gebruikt om gegevenswaarden als een kaart op te slaan. In tegenstelling tot andere gegevenstypen die slechts één waarde als element bevatten, bevat de Dictionary een sleutel-waardepaar. In Dictionary moet de sleutel uniek en onveranderlijk zijn. Dit betekent dat een Python Tuple een sleutel kan zijn, terwijl een Python Lijst dat niet kan. Een woordenboek kan worden gemaakt door een reeks elementen tussen accolades {} te plaatsen, gescheiden door ‘komma’.
Voorbeeld:
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> |
>
>
Uitgang:
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>
Soms, wanneer de KeyError optreedt, kan dit een probleem worden. Om dit te ondervangen introduceert Python een ander woordenboek, zoals een container, bekend als Standaarddict die aanwezig is in de collectiemodule.
Opmerking: Voor meer informatie, zie Python-woordenboek .
Standaarddict
Standaarddict is een containerachtig woordenboeken aanwezig in de module collecties . Defaultdict is een subklasse van de woordenboekklasse die een woordenboekachtig object retourneert. De functionaliteit van zowel de woordenboeken als het defaultdict is vrijwel hetzelfde, behalve het feit dat defaultdict nooit een KeyError genereert. Het biedt een standaardwaarde voor de sleutel die niet bestaat.
Syntaxis: standaarddict(standaard_fabriek)
Parameters:default_factory: een functie die de standaardwaarde retourneert voor het gedefinieerde woordenboek. Als dit argument ontbreekt, genereert het woordenboek een KeyError.
Voorbeeld:
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'>])> |
>
>
Uitgang:
1 2 Not Present>
Innerlijke werking van het standaarddictaat
Defaultdict voegt één beschrijfbare instantievariabele en één methode toe naast de standaard woordenboekbewerkingen. De instantievariabele is de parameter default_factory en de opgegeven methode is __missing__.
- Default_factory: Het is een functie die de standaardwaarde retourneert voor het gedefinieerde woordenboek. Als dit argument ontbreekt, genereert het woordenboek een KeyError.
Voorbeeld:
Python3
Avl boom
# 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'>])> |
>
>
Uitgang:
1 2 Not Present>
- __missing__(): Deze functie wordt gebruikt om de standaardwaarde voor het woordenboek op te geven. Deze functie neemt default_factory als argument en als dit argument Geen is, wordt er een KeyError gegenereerd, anders wordt er een standaardwaarde voor de gegeven sleutel opgegeven. Deze methode wordt feitelijk aangeroepen door de methode __getitem__() van de klasse dict wanneer de gevraagde sleutel niet wordt gevonden. __getitem__() verhoogt of retourneert de waarde die wordt geretourneerd door __missing__(). methode.
Voorbeeld:
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'>))> |
>
>
Uitgang:
Not Present Not Present>
Lijst gebruiken als default_factory
Wanneer de klasse list wordt doorgegeven als het argument default_factory, wordt er een defaultdict gemaakt met de waarden die list zijn.
Voorbeeld:
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)> |
>
Oracle SQL is niet gelijk
>
Uitgang:
Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})> Int gebruiken als default_factory
Wanneer de klasse int wordt doorgegeven als het argument default_factory, wordt er een defaultdict gemaakt met de standaardwaarde nul.
Voorbeeld:
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)> |
>
>
Uitgang:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})>