Słownik w Pythonie to nieuporządkowany zbiór wartości danych, który służy do przechowywania wartości danych, podobnie jak mapa. W przeciwieństwie do innych typów danych, które przechowują tylko jedną wartość jako element, słownik przechowuje parę klucz-wartość. W słowniku klucz musi być unikalny i niezmienny. Oznacza to, że krotka Pythona może być kluczem, podczas gdy lista Pythona nie. Słownik można utworzyć, umieszczając sekwencję elementów w nawiasach klamrowych {}, oddzielonych przecinkiem.
Przykład:
Python3
zajęcia z matematyki w Javie
# 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> |
>
>
Wyjście:
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>
Czasami, gdy zostanie zgłoszony KeyError, może to stać się problemem. Aby przezwyciężyć ten problem, Python wprowadza inny słownik, taki jak kontener, znany jako Domyślny dykt który jest obecny w module kolekcji.
Notatka: Aby uzyskać więcej informacji, zobacz Słownik Pythona .
Domyślny dykt
Domyślny dykt jest pojemnikiem podobnym do słowniki obecny w module zbiory . Defaultdict jest podklasą klasy słownika, która zwraca obiekt podobny do słownika. Funkcjonalność obu słowników i defaultdict jest prawie taka sama, z wyjątkiem faktu, że defaultdict nigdy nie zgłasza błędu KeyError. Podaje domyślną wartość klucza, który nie istnieje.
Składnia: defaultdict (domyślna_fabryka)
Parametry:default_factory: Funkcja zwracająca wartość domyślną dla zdefiniowanego słownika. Jeśli ten argument jest nieobecny, słownik zgłasza błąd KeyError.
Przykład:
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'> ])> |
>
>
Wyjście:
1 2 Not Present>
Wewnętrzne działanie defaultdict
Oprócz standardowych operacji słownikowych Defaultdict dodaje jedną zapisywalną zmienną instancji i jedną metodę. Zmienną instancji jest parametr default_factory, a dostarczona metoda to __missing__.
testowanie i rodzaje testów
- Default_factory: Jest to funkcja zwracająca wartość domyślną dla zdefiniowanego słownika. Jeśli ten argument jest nieobecny, słownik zgłasza błąd KeyError.
Przykład:
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'> ])> |
>
>
Wyjście:
1 2 Not Present>
- __missing__(): Ta funkcja służy do podania domyślnej wartości słownika. Ta funkcja przyjmuje jako argument default_factory i jeśli ten argument ma wartość None, zgłaszany jest błąd KeyError, w przeciwnym razie podaje wartość domyślną dla danego klucza. Ta metoda jest zasadniczo wywoływana przez metodę __getitem__() klasy dict, gdy żądany klucz nie zostanie znaleziony. __getitem__() podnosi lub zwraca wartość zwróconą przez __missing__(). metoda.
Przykład:
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'> ))> |
>
>
Wyjście:
Not Present Not Present>
Używanie listy jako domyślnej fabryki
Kiedy klasa list zostanie przekazana jako argument default_factory, tworzony jest defaultdict z wartościami list.
Przykład:
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)> |
pole tekstowe
>
>
Wyjście:
Dictionary with values as list: defaultdict(, {0: [0], 1: [1], 2: [2], 3: [3], 4: [4]})>
Używanie int jako default_factory
Kiedy klasa int zostanie przekazana jako argument default_factory, tworzony jest defaultdict z wartością domyślną wynoszącą zero.
Przykład:
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)> |
>
>
Wyjście:
defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2})>