logo

Defaultdict w Pythonie

Słownik to nieuporządkowany zbiór wartości danych w języku Python używany do przechowywania wartości danych, takich jak mapy. Słownik przechowuje pary klucz-wartość zamiast pojedynczej wartości jako elementu, tak jak inne typy danych. Klucz zaimplementowany w słowniku musi być unikalny i niezmienny. Oznacza to, że krotka Pythona może być kluczem, ale lista Pythona nie może być kluczem w słowniku. Słownik możemy stworzyć umieszczając sekwencję elementów w nawiasach klamrowych {}, wartości oddziela przecinek ','.

Przykład 1:

 Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 1: ', Dict_1[1]) print ('key pair 3: ', Dict_1[3]) 

Wyjście:

 Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} key pair 1: A key pair 3: C 

Ale jeśli spróbujemy wydrukować piątą wartość klucza, pojawi się błąd, ponieważ „Dykt_1” nie zawiera piątej wartości klucza.

zajęcia z matematyki w Javie

Przykład 2:

 Dict_1 = {1: 'A', 2: 'B', 3: 'C', 4: 'D'} print ('Dictionary: ') print (Dict_1) print ('key pair 5: ', Dict_1[5]) 

Wyjście:

 Dictionary: {1: 'A', 2: 'B', 3: 'C', 4: 'D'} --------------------------------------------------------------------------- KeyError Traceback (most recent call last) in 2 print ('Dictionary: ') 3 print (Dict_1) ----> 4 print ('key pair 5: ', Dict_1[5]) KeyError: 5 

Kiedykolwiek Błąd klucza zostanie podniesiony, może to stać się problemem dla użytkowników. Możemy przezwyciężyć ten błąd, korzystając z innego słownika Pythona, który działa jak kontener znany jako Domyślny dykt . Użytkownicy mogą znaleźć ten słownik wewnątrz „kolekcje” moduł.

wyrok domyślny

Domyślnym słownikiem jest słownik Pythona, który przypomina kontener znajdujący się w module „kolekcje”. Jest to podklasa klasy słownikowej, która służy do zwracania obiektu podobnego do słownika. Zarówno defaultdict, jak i słownik mają tę samą funkcjonalność, z tą różnicą, że defaultdict nigdy nie zgłasza żadnego błędu KeyError, ponieważ zapewnia domyślną wartość klucza, która nie istnieje w słowniku utworzonym przez użytkownika.

Składnia:

 defaultdict(default_factory) 

Parametry:

    domyślna_fabryka:Funkcja default_factory() zwraca domyślną wartość ustawioną przez użytkownika dla zdefiniowanego przez niego słownika. Jeśli ten argument jest nieobecny, słownik zgłosi błąd KeyError.

Przykład:

testowanie i rodzaje testów
 from collections import defaultdict as DD # Function for returning a default values for the # keys which are not present in the dictionary def default_value(): return 'This key is not present' # Now, we will define the dict dict_1 = DD(default_value) dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key pair 1: ', dict_1['ABC']) print ('key pair 3: ', dict_1['GHI']) print ('key pair 5: ', dict_1['MNO']) 

Wyjście:

 Dictionary: defaultdict(, {'ABC': 1, 'DEF': 2, 'GHI': 3, 'JKL': 4}) key pair 1: 1 key pair 3: 3 key pair 5: This key is not present 

Wewnętrzne działanie defaultdict

Kiedy używamy defaultdict, oprócz standardowych operacji słownikowych otrzymujemy dodatkową zapisywalną zmienną instancji i jedną metodę. Zapisywalna zmienna instancji to parametr default_factory i __zaginiony__ jest metoda.

    domyślna_fabryka:Funkcja default_factory() zwraca domyślną wartość ustawioną przez użytkownika dla zdefiniowanego przez niego słownika.

Przykład:

 from collections import defaultdict as DD dict_1 = DD(lambda: 'This key is not present') dict_1['ABC'] = 1 dict_1['DEF'] = 2 dict_1['GHI'] = 3 dict_1['JKL'] = 4 print ('Dictionary: ') print (dict_1) print ('key value 1: ', dict_1['ABC']) print ('key value 3: ', dict_1['GHI']) print ('key value 5: ', dict_1['MNO']) 

Wyjście:

 Dictionary: defaultdict(<function at 0x0000019efc4b58b0>, {&apos;ABC&apos;: 1, &apos;DEF&apos;: 2, &apos;GHI&apos;: 3, &apos;JKL&apos;: 4}) key value 1: 1 key value 3: 3 key value 5: This key is not present </function>
    __zaginiony__():Funkcja __missing__() służy do podawania wartości domyślnej do słownika. Funkcja __missing__() przyjmuje jako argument wartość default_factory i jeśli argument jest ustawiony na None, zostanie zgłoszony błąd KeyError; w przeciwnym razie zapewni wartość domyślną dla danego klucza. Ta metoda jest zasadniczo nazywana przez __Zdobądź przedmiot__() funkcja klasy dict, gdy żądany klucz nie zostanie znaleziony. Funkcja __getitem__() podnosi lub zwraca wartość obecną w funkcji __missing__().

Przykład:

 from collections import defaultdict as DD dict_1 = DD(lambda: &apos;This key is not present&apos;) dict_1[&apos;ABC&apos;] = 1 dict_1[&apos;DEF&apos;] = 2 dict_1[&apos;GHI&apos;] = 3 dict_1[&apos;JKL&apos;] = 4 print (&apos;Dictionary: &apos;) print (dict_1) print (&apos;key value 1: &apos;, dict_1.__missing__(&apos;ABC&apos;)) print (&apos;key value 4: &apos;, dict_1[&apos;JKL&apos;]) print (&apos;key value 5: &apos;, dict_1.__missing__(&apos;MNO&apos;)) 

Wyjście:

pole tekstowe
 Dictionary: defaultdict(<function at 0x0000019efc4b5670>, {&apos;ABC&apos;: 1, &apos;DEF&apos;: 2, &apos;GHI&apos;: 3, &apos;JKL&apos;: 4}) key value 1: This key is not present key value 4: 4 key value 5: This key is not present </function>

Jak używać „Listy” jako domyślnej fabryki

Możemy przekazać klasę list jako argument default_factory, co spowoduje utworzenie defaultdict z wartościami ustawionymi w formacie listy.

Przykład:

 from collections import defaultdict as DD # Defining a dictionary dict_1 = DD(list) for k in range(7, 12): dict_1[k].append(k) print (&apos;Dictionary with values as list:&apos;) print (dict_1) 

Wyjście:

 Dictionary with values as list: defaultdict(, {7: [7], 8: [8], 9: [9], 10: [10], 11: [11]}) 

Jak używać „int” jako default_factory

Możemy przekazać klasę int jako argument default_factory, co spowoduje utworzenie pliku defaultdict z wartością domyślną ustawioną na zero.

Przykład:

 from collections import defaultdict as DD # Defining the dict dict_1 = DD(int) J = [1, 2, 3, 4, 2, 4, 1, 2] # Now, we will iterate through the list &apos;J&apos; # for keeping the count for k in J: # As, The default value is 0 # so we do not need to # enter the key first dict_1[k] += 1 print(dict_1) 

Wyjście:

 defaultdict(, {1: 2, 2: 3, 3: 1, 4: 2}) 

Wniosek

W tym samouczku omówiliśmy defaultdict w Pythonie i sposoby wykonywania różnych operacji na defaultdict za pomocą parametru default_factory.