logo

__dict__ u Pythonu

U Pythonu, rječnik je neuređen skup vrijednosti podataka to bi moglo biti koristi se za pohranu vrijednosti podataka slično kao i karta. Za razliku od drugih tipova podataka, koji mogu sadržavati samo jednu vrijednost po elementu, rječnici također mogu sadržavati a ključ:vrijednost par. Za izradu rječnika učinkovitije , Ponuđen je ključ-vrijednost.

Kad je u pitanju pristup atributima, točka '.' (kao u x.bilo koji_atribut ) je sve što je većini korisnika poznato. Jednostavno rečeno, pristup atributima je proces dobivanja objekta koji je povezan s onim koji već imate . Nekome tko koristi Python može izgledati vrlo jednostavno, a da ne ulazi previše u pojedinosti. Međutim, mnogo toga se događa iza kulisa ovog relativno jednostavnog procesa.

Što je _dict_?

Svaki modul ima jedinstveno svojstvo tzv __izreka__. Ovaj rječnik sadrži tablicu simbola za modul . Karakteristike (za pisanje) stavke pohranjuju se u rječniku ili drugom objektu mapiranja.

Jednostavno rečeno, svaki objekt u Pythonu ima svojstvo koje je označeno simbolom __dict__ . Nadalje, ovaj objekt ima sva svojstva koja su za njega navedena. Drugi naziv za __dict__ je mappingproxy objekt. Rječnik možemo koristiti putem primjenom svojstva __dict__ objektu klase.

Sintaksa:

 object.__dict__ 

Primjer :

 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__) 

Izlaz:

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

Primjer 2:

Ovaj primjer će pokazati da pomoću __dict__ atribut , može se stvoriti rječnik iz bilo kojeg objekta:

rekha indijanac
 # 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__) 

Izlaz:

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

Primjer 3:

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

Izlaz:

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

Korištenje rječnika bez upotrebe __dict__ u Pythonu:

Stvaranje rječnika:

U Pythonu se rječnik može napraviti dodavanjem a popis unosa unutar vitičastih zagrada i njihovo odvajanje zarezom . Rječnik pohranjuje parove vrijednosti, gdje je jedan element para ključ, a drugi njegov Ključ: vrijednost . Za razliku od ključevi, koji ne mogu se ponavljati i moraju biti nepromjenjive, vrijednosti u rječnicima može biti bilo koje vrste podataka i može se duplicirati .

Elementi su odvojeno zarezima , svaki ključ se razlikuje po svojoj vrijednosti dvotočkom (:), a cijela je struktura sadržana u vitičaste zagrade . Rječnik koji je potpuno lišen svih riječi napisan je na sljedeći način: {} .

Ključevi rječnika moraju biti nepromjenjiv , kao što je cijeli brojevi, torke ili nizovi , iako vrijednosti mogu biti bilo koje vrste. U rječnicima Pythona, isti naziv ključa koji je drugačije napisan smatra se kao poseban ključ. Imajte na umu da ključevi rječnika razlikuju velika i mala slova ; tipke sa sličnim nazivom, ali različitim velikim i malim slovima bit će drugačije obrađene.

Primjer :

 # 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) 

Izlaz:

 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 ugrađena metoda dict() također omogućuje stvaranje rječnika . Jednostavno rečeno dvije vitičaste zagrade {} zajedno će rezultirati an prazan rječnik .

Primjer :

 # 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) 

Izlaz:

 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'} 

Složenosti za izradu rječnika:

  • Vremenska složenost: O(duljina(dikt))
  • Složenost prostora: Na)

Ugniježđeni rječnici:

To je oblik rječnika gdje jedan ili više od jednog ključevi imaju rječnik pridružen sebi kao vrijednost od ključa.

Primjer :

 # 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) 

Izlaz:

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

Dodavanje elemenata u rječnik:

Tamo su nekoliko metoda za dodavanje elemenata u Python rječnik. Određivanjem vrijednosti i ključa zajedno, na primjer, Dict[Key] = 'Vrijednost', jedna po jedna vrijednost može se dodati u rječnik. Koristiti ugrađena funkcija update(). , može se izmijeniti postojeća vrijednost u rječniku. Postojeći Rječnik također se može proširiti s ugniježđene ključne vrijednosti .

Napomena : prilikom dodavanja vrijednosti, vrijednost se ažurira ako kombinacija ključa i vrijednosti već postoji. Ako nije, novi ključ i vrijednost dodaju se u rječnik.

Primjer :

 # 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) 

Izlaz:

 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'}}} 

Složenosti za dodavanje elemenata u rječnik:

  • Vremenska složenost: O(1)/O(n)
  • Složenost prostora: O(1)

Pristup elementima rječnika:

Rječnik zapošljava ključevi , dok druge vrste podataka zahtijevaju indeksiranje za dohvaćanje vrijednosti. Ključevi se mogu koristiti s funkcija get(). ili unutar uglatih zagrada [].

U slučaju da a ključ se ne može pronaći u rječniku, Proizvodi se KeyError ako koristimo uglate zagrade []. S druge strane, ako se ključ ne može pronaći, funkcija get() vraća Ništa.

Primjer :

 # 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)) 

Izlaz:

 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 

Složenosti za pristup elementima u rječniku:

  • Vremenska složenost: O(1)
  • Složenost prostora: O(1)

Pristup ugniježđenom elementu rječnika:

Možemo uzeti pomoć od indeksiranje [] tehnika da biste dobili vrijednost postojećeg ključa u ugniježđeni rječnik .

Primjer :

 # 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.']) 

Izlaz:

 {3: 'JavatPoint'} JavatPoint Website 

Metode ugrađenog rječnika:

čisto() :

Funkcija dict.clear() eliminira svaki par ključ-vrijednost iz rječnika.

kopiraj() :

A plići primjerak rječnika vraća metoda dict.copy().

fromkeys():

Korištenje isporučenog iterabla (niz, popis, skup ili tuple) kao ključevi i navedena vrijednost, funkcija dict.fromkeys() stvara novi rječnik .

dobiti():

Ovaj daje pridruženu vrijednost s datim ključem.

stavke():

A objekt prikaza rječnika , koji nudi dinamičku prezentaciju rječničkih stavki kao popis parova ključ-vrijednost se vraća funkcijom dict.items(). Kada se rječnik ažurira, ovo objekt prikaza je također ažuriran .

dict.keys() :

Funkcija dict.keys() vraća objekt prikaza rječnika s rječnikom popis ključeva.

pop() :

Ovaj vraća vrijednost ključa nakon njegovog uklanjanja . Ako ključ nedostaje u rječniku, izbacuje ili a KeyError ili vraća zadana vrijednost ako je takav bio osiguran.

piće() :

Ovaj uklanja jednu stavku iz rječnika i vraća torku parova (ključ, vrijednost). The Zadnji ušao prvi izašao (LIFO) niz se koristi za vraćanje parova.

setdefault() :

Ovaj vraća vrijednost rječnika za dati ključ . Ako se ključ ne može otkriti, ključ s isporučenim zadana vrijednost dodaje se. Postavlja se Nijedan kao zadana vrijednost ako nije isporučen.

vrijednosti():

The objekt prikaza rječnika koji nudi dinamički prikaz svake vrijednosti koja je prisutan u rječniku, vraća se funkcijom dict.values(). Kada se rječnik ažurira, ovo objekt prikaza je također ažuriran .

Ažuriraj() :

A rječnik ili bilo koji iterable s parovima ključ-vrijednost , kao što je tuple, može se ažurirati pomoću funkcije dict.update().

Primjer :

 # 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()) 

Izlaz:

 {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++']) 

Razlikovanje između rječnika i popisa:

Strukture podataka kao što su a popis i rječnik suštinski su različite. An naručena serija predmeta može se pohraniti u a popis tako da ga možemo indeksirati ili iterirati po njemu. Liste se također mogu mijenjati čak i nakon što su već generirane jer su promjenjive vrste. The Python rječnik je pohrana ključ-vrijednosti i implementacija a hash tablica . Ne slijedi nikakav određeni slijed i zahtijeva ključeve koji se mogu hashirati. Osim toga, brz je za traženje ključeva.

A popisi elementi sadrže sljedeće značajke:

  • Osim ako nisu posebno preuređeni, oni zadržati njihov trenutni poredak (na primjer, sortiranjem popisa).
  • Mogu biti bilo koje vrste, ili čak kombinacija vrsta .
  • Putem numeričkih (na nuli) indeksa, možemo im pristupiti.

Karakteristike rječnik elementi su sljedeći:

  • Svaki unos ima a vrijednost i ključ .
  • Narudžbe su nije opravdano .
  • Ključne vrijednostikoriste se za pristup elementima.Bilo koji tip hashtable (osim dict)mogu se koristiti za ključne vrijednosti, a vrste se mogu kombinirati.Bilo koja vrijednost, uključujući druge diktate, je dozvoljeno , a vrste se mogu kombinirati.

Upotreba:

Koristimo a rječnik ako imamo a skup različitih ključeva koji odgovaraju vrijednostima , ali a popis kada imamo naručena skupina stvari .

zaključak:

  • Računalnim jezikom, rječnici su vrsta strukture podataka koja se koristi za čuvanje informacija to je nekako povezano.
  • Svaki modul ima jedinstveno svojstvo tzv __izreka__.
  • __dikt__ sadrži tablicu simbola za modul .
  • Svojstva elementa pohranjena su u a objekt preslikavanja.
  • Svaki objekt u Pythonu ima svojstvo koje je označeno simbolom __dict__ .
  • Drugi naziv za __dict__ također je poznat kao mappingproxy objekt.
  • Dvije komponente Python rječnika se nazivaju Ključevi i vrijednosti .
  • Vas možda neće primiti svoje podatke vratite sličnim redoslijedom kojim ste ih unijeli budući da rječnici ne čuvaju svoje podatke u određenom redoslijedu.
  • Ključevi će se sastojati samo od jedna stvar.
  • Vrijednosti mogu biti cijeli brojevi, popisi, popisi unutar popisa itd.
  • Ne može biti više od jedan unos po ključu (duplicirani ključ nije dopušten)
  • Ključevi rječnika moraju biti nepromjenjiv , kao što je cijeli brojevi, torke ili nizovi , iako vrijednosti mogu biti bilo koje vrste.
  • Rječnik tipke su osjetljive na velika i mala slova ; u rječnicima Pythona, isti naziv ključa napisan drugačije smatra se kao a poseban ključ .