Diccionari a Python és una col·lecció no ordenada de valors de dades que s'utilitzen per emmagatzemar valors de dades com un mapa. A diferència d'altres tipus de dades que només contenen un valor únic com a element, el diccionari conté la parella clau-valor. Al Diccionari, la clau ha de ser única i immutable. Això vol dir que una tupla de Python pot ser una clau mentre que una llista de Python no. Es pot crear un diccionari col·locant una seqüència d'elements dins de claus {}, separats per 'coma'.
Exemple:
Python 3
# 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> |
>
sistema de fitxers a linux
>
Sortida:
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>
De vegades, quan es produeix KeyError, es pot convertir en un problema. Per superar això, Python introdueix un altre diccionari com a contenidor conegut com Defaultdict que està present dins del mòdul de col·leccions.
Nota: Per a més informació, consulteu Diccionari Python .
DefaultDict
Defaultdict és un contenidor com diccionaris present al mòdul col·leccions . Defaultdict és una subclasse de la classe de diccionari que retorna un objecte semblant al diccionari. La funcionalitat dels dos diccionaris i de defaultdict són gairebé les mateixes, excepte pel fet que defaultdict mai genera un KeyError. Proporciona un valor predeterminat per a la clau que no existeix.
Sintaxi: defaultdict (fàbrica_predeterminada)
Paràmetres:default_factory: una funció que retorna el valor per defecte per al diccionari definit. Si aquest argument no és, el diccionari genera un KeyError.
Exemple:
Python 3
# 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'> ])> |
>
>
Sortida:
1 2 Not Present>
Funcionament intern de defaultdict
Defaultdict afegeix una variable d'instància que es pot escriure i un mètode a més de les operacions estàndard del diccionari. La variable d'instància és el paràmetre default_factory i el mètode proporcionat és __missing__.
proves de rendiment
- Default_factory: és una funció que retorna el valor per defecte per al diccionari definit. Si aquest argument no és, el diccionari genera un KeyError.
Exemple:
Python 3
# 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'> ])> |
>
>
tutorial hadoop
Sortida:
1 2 Not Present>
- __missing__(): aquesta funció s'utilitza per proporcionar el valor predeterminat per al diccionari. Aquesta funció pren default_factory com a argument i si aquest argument és None, es genera un KeyError, en cas contrari, proporciona un valor per defecte per a la clau donada. Aquest mètode és bàsicament cridat pel mètode __getitem__() de la classe dict quan no es troba la clau sol·licitada. __getitem__() augmenta o retorna el valor retornat per __missing__(). mètode.
Exemple:
Python 3
# 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'> ))> |
>
java comparable
>
Sortida:
Not Present Not Present>
Utilitzant List com a default_factory
Quan la classe de llista es passa com a argument default_factory, es crea un defaultdict amb els valors que són llista.
Exemple:
Python 3
# 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)> |
>
>
Sortida:
Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})>
S'utilitza int com a default_factory
Quan es passa la classe int com a argument default_factory, es crea un defaultdict amb el valor per defecte zero.
Exemple:
Python 3
# 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)> |
>
>
Sortida:
aleatòria al c
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})>