logo

__dict__ w Pythonie

W Pythonie słownik to plik nieuporządkowany zbiór wartości danych to mogłoby być używany do przechowywania wartości danych podobnie jak mapa. W przeciwieństwie do innych typów danych, które mogą zawierać tylko jedną wartość na element, słowniki mogą również zawierać kluczowa wartość para. Aby stworzyć słownik bardziej wydajny , oferowana jest para klucz-wartość.

Jeśli chodzi o dostęp do atrybutów, kropka „.” (jak w x.any_atrybut ) to wszystko, co zna większość użytkowników. Po prostu powiedziałem, dostęp do atrybutów to proces uzyskiwania obiektu, który jest połączony z obiektem, który już posiadasz . Może się to wydawać bardzo proste dla kogoś, kto używa Pythona, bez wchodzenia za daleko w szczegóły. Jednak za tym stosunkowo prostym procesem wiele się dzieje.

Co to jest _dict_?

Każdy moduł ma unikalną właściwość zwaną __dykt__. Ten słownik zawiera tablicę symboli modułu . (Zapisywalne) cechy elementu są przechowywane w słowniku lub innym obiekcie mapującym.

Mówiąc prościej, każdy obiekt w Pythonie ma właściwość oznaczona symbolem __dict__ . Ponadto obiekt ten ma wszystkie właściwości, które zostały dla niego określone. Inna nazwa __dict__ to mapowanie proxy obiekt. Ze słownika możemy korzystać poprzez stosując właściwość __dict__ do obiektu klasy.

Składnia:

 object.__dict__ 

Przykład :

 class AnimalClass: def __init__(self,identity,age): self.identity = identity self.age = age def feature(self): if self.age == '10': return True else: return False ac = AnimalClass('Lion','10') print(ac.__dict__) 

Wyjście:

 {'identity': 'Lion', 'age': '10'} 

Przykład 2:

Ten przykład pokaże, że za pomocą atrybut __dict__ , można stworzyć słownik z dowolnego obiektu:

 # class Flowers is defined class Flowers: # constructor def __init__(self): # keys are being initialized with # their corresponding values self.Rose = 'red' self.Lily = 'white' self.Lotus = 'pink' def displayit(self): print('The Dictionary from object fields belongs to the class Flowers :') # object animal of class Animals flower = Flowers() # calling displayit function flower.displayit() # calling the attribute __dict__ on flower # object and making it print it print(flower.__dict__) 

Wyjście:

 The Dictionary from object fields belongs to the class Flowers : {'Rose': 'red', 'Lily': 'white', 'Lotus': 'pink'} 

Przykład 3:

 def funct(): pass funct.practice = 1 print(funct.__dict__) class PracticeClass: x = 1 def practice_function(self): pass print(PracticeClass.__dict__) 

Wyjście:

 {'practice': 1} {'__module__': '__main__', 'x': 1, 'practice_function': , '__dict__': , '__weakref__': , '__doc__': None} 

Używanie słownika bez użycia __dict__ w Pythonie:

Tworzenie słownika:

W Pythonie słownik można utworzyć, dołączając plik a lista wpisów ujęta w nawiasy klamrowe i oddzielająca je przecinkiem . Słownik przechowuje pary wartości, gdzie jeden element pary jest kluczem, a drugi jego Kluczowa wartość . W odróżnieniu Klucze, Który nie mogą być powtarzane i muszą być niezmienne, wartości w słownikach mogą mieć dowolny typ danych i mogą być powielane .

Elementy są Oddzielone przecinkami , każdy klucz jest rozróżniany na podstawie jego wartości przez dwukropek (:) i cała struktura jest zawarta w nawiasy klamrowe . Słownik całkowicie pozbawiony wszystkich słów jest napisany w następujący sposób: {} .

Klucze słownika muszą być niezmienny , Jak na przykład liczby całkowite, krotki lub ciągi znaków , chociaż wartości mogą być dowolnego typu. W słownikach Pythona ta sama nazwa klucza zapisana w inny sposób jest uważana za odrębny klucz. Proszę o tym pamiętać W kluczach słownika rozróżniana jest wielkość liter ; klucze o podobnej nazwie, ale różniące się wielkością liter, będą obsługiwane inaczej.

Przykład :

pole listy HTML
 # Creating a Dictionary # using Integer Keys only Dict = {1: 'JAVA', 2: 'T', 3: 'POINT'} print('
Creating a Dictionary by using Integer Keys : ') print(Dict) # Creating a Dictionary # using various Mixed keys Dict = {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} print('
Creating a Dictionary by using Mixed Keys : ') print(Dict) 

Wyjście:

 Creating a Dictionary by using Integer Keys : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using Mixed Keys : {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} 

The wbudowana metoda dict() pozwala również na tworzenie słowników . Po prostu kładąc dwa nawiasy klamrowe {} razem spowoduje pusty słownik .

Przykład :

 # Creating an empty Dictionary myDict = {} print('This is an Empty Dictionary: ') print(myDict) # Creating a Dictionary # using the dict() method myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT'}) print('
Creating a Dictionary by using the dict() method : ') print(myDict) # Creating a Dictionary # using each item as a different Pair myDict = dict([(1, 'JavaTpoint'), (2, 'Great')]) print('
Creating a Dictionary by using each item as a different pair : ') print(myDict) 

Wyjście:

 This is an Empty Dictionary: {} Creating a Dictionary by using the dict() method : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using each item as a different pair : {1: 'JavaTpoint', 2: 'Great'} 

Złożoności związane z tworzeniem słownika:

  • Złożoność czasowa: O(długość(dykt))
  • Złożoność przestrzeni: NA)

Zagnieżdżone słowniki:

Jest to forma słownika, w której występuje jeden lub więcej niż jeden klucze mają dołączony słownik jako wartość klucza.

Przykład :

 # Creating a Nested Dictionary # as mentioned above using a dictionary as a value to a key in # a dictionary myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}}) print('
Creating a Nested Dictionary : ') print(myDict) 

Wyjście:

 Creating a Nested Dictionary : {1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}} 

Dodawanie elementów do słownika:

Tam są kilka metod dodawania elementów do słownika Pythona. Określając jednocześnie wartość i klucz, na przykład Dict[Key] = „Wartość”, Jednorazowo do słownika można dodać jedną wartość. Używając wbudowana funkcja update(). , można modyfikować istniejącą wartość w słowniku. Istniejący słownik można również rozszerzyć o zagnieżdżone wartości kluczy .

Uwaga: podczas dodawania wartości wartość jest aktualizowana, jeśli kombinacja klucz-wartość już istnieje. Jeżeli nie, do słownika dodawany jest nowy klucz i wartość.

Przykład :

 # Creating Empty Dictionary myDict = {} print('Empty Dictionary: ') print(myDict) # Adding elements only one at a time myDict[0] = 'Java' myDict[3] = 'T' myDict[6] = 41 print('
Dictionary after the addition of 3 elements: ') print(myDict) # Adding a set of values # to a particular Key myDict['settingValues'] = 7, 8, 9 print('
Dictionary after the adding a set of values to a key : ') print(myDict) # Updating the existing Key's Value myDict[3] = 'tPoint' print('
Dictionary after Updated key value: ') print(myDict) # Adding Nested Key value to Dictionary myDict[8] = {'Nested' :{'A' : 'boy', 'B' : 'Girl'}} print('
Dictionary after Addition of a Nested Key: ') print(myDict) 

Wyjście:

 Empty Dictionary: {} Dictionary after the addition of 3 elements: {0: 'Java', 3: 'T', 6: 41} Dictionary after the adding a set of values to a key : {0: 'Java', 3: 'T', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Updated key value: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Addition of a Nested Key: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9), 8: {'Nested': {'A': 'boy', 'B': 'Girl'}}} 

Złożoność dodawania elementów do słownika:

  • Złożoność czasowa: O(1)/O(n)
  • Złożoność przestrzeni: O(1)

Dostęp do elementów słownika:

Słownik posługuje się Klucze , podczas gdy inne typy danych wymagają indeksowania w celu pobrania wartości. Klucze mogą być używane z funkcja get(). Lub w nawiasach kwadratowych [].

przypadki testowe junit

W przypadku, gdy A nie można znaleźć klucza w słowniku, Pojawia się KeyError jeśli użyjemy nawiasy kwadratowe []. Z drugiej strony, jeśli nie można zlokalizować klucza, plik Funkcja get() zwraca Brak.

Przykład :

 # Python program to demonstrate the # accessing of an element, from a Dictionary # Creating a Dictionary myDict = {1: 'Java', 'name': 'T', 2: 'Point', 4: 'Website'} # accessing an element using key print('Accessing an element using the key:') print(myDict['name']) print('Accessing another element using the key:') print(myDict[4]) # accessing an element using the get() method print('Accessing an using the get() method:') print(myDict.get(2)) print('Accessing another using the get() method:') print(myDict.get(1)) 

Wyjście:

 Accessing an element using the key: T Accessing another element using the key: Website Accessing an using the get() method: Point Accessing another using the get() method: Java 

Złożoność dostępu do elementów w słowniku:

  • Złożoność czasu: O(1)
  • Złożoność przestrzeni: O(1)

Dostęp do elementu zagnieżdżonego słownika:

Możemy skorzystać z pomocy technika indeksowania []. aby uzyskać wartość istniejącego klucza w pliku zagnieżdżony słownik .

Przykład :

 # Creating a Dictionary myDict = {'myDict1': {3: 'JavatPoint'}, 'myDict2': {'Info.': 'Website'}} # Accessing the elements using the key print(myDict['myDict1']) print(myDict['myDict1'][3]) print(myDict['myDict2']['Info.']) 

Wyjście:

 {3: 'JavatPoint'} JavatPoint Website 

Wbudowane metody słownikowe:

jasne() :

Funkcja dict.clear() eliminuje każdą parę klucz-wartość ze słownika.

deterministyczne automaty skończone

Kopiuj() :

A płytsza kopia słownika jest zwracany metodą dict.copy().

zkluczy():

Korzystanie z dostarczonej iteracji (ciąg, lista, zestaw lub krotka) jako klucze i określoną wartość, funkcja dict.fromkeys() tworzy nowy słownik .

Dostawać() :

Ten podaje powiązaną wartość z podanym kluczem.

rzeczy() :

A obiekt widoku słownika , który oferuje dynamiczną prezentację elementów słownika w postaci listy par klucz-wartość jest zwracany za pomocą funkcji dict.items(). Kiedy słownik zostanie zaktualizowany, to obiekt widoku jest również aktualizowany .

dykt.keys() :

Funkcja dict.keys() zwraca obiekt widoku słownika ze słownikiem lista kluczy.

Muzyka pop() :

Ten zwraca wartość klucza po jego usunięciu . Jeśli w słowniku brakuje klucza, zostanie wygenerowany komunikat a Błąd klucza lub zwraca domyślna wartość jeśli taki został zapewniony.

pić():

Ten usuwa jeden element ze słownika i zwraca krotkę par (klucz, wartość). The Ostatnie weszło, pierwsze wyszło (LIFO) sekwencja służy do zwracania par.

ustawdomyślnie() :

Ten zwraca wartość słownika dla danego klucza . Jeśli nie można znaleźć klucza, klucz znajduje się w zestawie domyślna wartość jest dodany. Ustawia Nic jako domyślna wartość jeśli nie jest dostarczony.

wartości():

The obiekt widoku słownika, który oferuje widok dynamiczny każdej wartości, która jest obecny w słowniku, jest zwracany za pomocą funkcji dict.values(). Kiedy słownik zostanie zaktualizowany, to obiekt widoku jest również aktualizowany .

aktualizacja() :

bajtów do łańcucha Pythona

A słownik lub dowolny iterowalny z parami klucz-wartość , takie jak krotka, można zaktualizować za pomocą funkcji dict.update().

Przykład :

 # Example to demonstrate all dictionary methods #Creating a Dictionary mydict1={1:'HTML',2:'CSS',3:'Javascript',4:'Python'} #copy method mydict2=mydict1.copy() print(mydict2) #clear method mydict1.clear() print(mydict1) #get method print(mydict2.get(1)) #items method print(mydict2.items()) #keys method print(mydict2.keys()) #pop method mydict2.pop(4) print(mydict2) #popitem method mydict2.popitem() print(mydict2) #update method mydict2.update({2:'C++'}) print(mydict2) #values method print(mydict2.values()) 

Wyjście:

 {1: 'HTML', 2: 'CSS', 3: 'Javascript', 4: 'Python'} {} HTML dict_items([(1, 'HTML'), (2, 'CSS'), (3, 'Javascript'), (4, 'Python')]) dict_keys([1, 2, 3, 4]) {1: 'HTML', 2: 'CSS', 3: 'Javascript'} {1: 'HTML', 2: 'CSS'} {1: 'HTML', 2: 'C++'} dict_values(['HTML', 'C++']) 

Różnica między słownikiem a listą:

Struktury danych takie jak lista i słownik są zasadniczo odmienne. Jakiś zamówiona seria artykułów można przechowywać w lista abyśmy mogli się do niego zaindeksować lub iterować po nim. Listy można również zmieniać nawet po ich wygenerowaniu, ponieważ można je zmieniać. The Słownik Pythona jest przechowywanie klucz-wartość i wdrożenie A tablica mieszająca . Nie ma żadnej konkretnej sekwencji i wymaga kluczy, które można łączyć. Dodatkowo umożliwia szybkie wyszukiwanie kluczowych elementów.

A listy elementy zawierają następujące funkcje:

  • O ile nie zostaną specjalnie zmienione zachować dotychczasowy porządek (na przykład sortując listę).
  • Mogą być dowolnego typu, a nawet kombinacja rodzajów .
  • Poprzez indeksy numeryczne (od zera)., możemy uzyskać do nich dostęp.

Charakterystyka słownik elementy są następujące:

  • Każdy wpis ma wartość i klucz .
  • Zamówienia są nie jest gwarantowane .
  • Kluczowe wartościsłużą do uzyskiwania dostępu do elementów.Dowolny typ tablicy mieszającej (inny niż dykt)mogą być używane dla wartości kluczy, a typy można łączyć.Jakakolwiek wartość, w tym inne dyktanda, jest dozwolone i typy można łączyć.

Stosowanie :

Używamy A słownik jeśli mamy zestaw odrębnych kluczy odpowiadających wartościom , ale lista kiedy mamy uporządkowana grupa rzeczy .

Wniosek :

  • W języku komputerowym słowniki to rodzaj struktury danych używanej do przechowywania informacji to jest w jakiś sposób powiązane.
  • Każdy moduł ma unikalną właściwość zwaną __dykt__.
  • __dykt__ zawiera tablicę symboli modułu .
  • Właściwości elementu są przechowywane w pliku a obiekt mapujący.
  • Każdy obiekt w Pythonie ma właściwość oznaczona symbolem __dict__ .
  • Inna nazwa __dict__ jest również znana jako mapujący obiekt proxy.
  • Nazywa się dwa składniki słownika Pythona Klucze i wartości .
  • Ty może nie otrzymać swoje dane w podobnej kolejności, w jakiej je wprowadzasz, ponieważ słowniki nie przechowują danych w żadnej określonej kolejności.
  • Klucze będą się składać z zaledwie jedna sprawa.
  • Wartości mogą być liczby całkowite, listy, listy wewnątrz list itp.
  • Nie może być więcej niż jeden wpis na klucz (niedozwolone jest duplikowanie klucza)
  • Klucze słownika muszą być niezmienny , Jak na przykład liczby całkowite, krotki lub ciągi znaków , chociaż wartości mogą być dowolnego typu.
  • Słownik W kluczach rozróżniana jest wielkość liter ; w słownikach Pythona ta sama nazwa klucza zapisana inaczej jest uważana za a odrębny klucz .