logo

__dict__ v Pythonu

V Pythonu je slovar neurejen niz vrednosti podatkov to bi lahko bilo uporablja za shranjevanje vrednosti podatkov podobno kot zemljevid. Za razliko od drugih tipov podatkov, ki lahko vključujejo le eno vrednost na element, lahko slovarji vsebujejo tudi a ključ:vrednost par. Za izdelavo slovarja bolj učinkovit , na voljo je ključ-vrednost.

Ko se nanaša na dostop do atributov, pika '.' (kot v x.any_attribute ) je vse, kar pozna večina uporabnikov. Preprosto povedano, dostop do atributa je postopek pridobivanja predmeta, ki je povezan z objektom, ki ga že imate . Nekomu, ki uporablja Python, se morda zdi zelo preprosto, ne da bi šel predaleč v podrobnosti. Vendar pa se veliko dogaja v ozadju tega razmeroma preprostega postopka.

Kaj je _dict_?

Vsak modul ima edinstveno lastnost, imenovano __dict__. Ta slovar vsebuje tabelo simbolov za modul . Lastnosti (zapisljive) postavke so shranjene v slovarju ali drugem objektu preslikave.

Preprosto povedano, vsak predmet v Pythonu ima lastnost, ki je označena s simbolom __dict__ . Poleg tega ima ta objekt vse lastnosti, ki so bile zanj določene. Drugo ime za __dict__ je mappingproxy predmet. Slovar lahko uporabljamo prek uporaba lastnosti __dict__ na predmet razreda.

Sintaksa:

 object.__dict__ 

Primer:

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

Izhod:

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

Primer 2:

Ta primer bo pokazal, da s pomočjo atribut __dict__ , bi lahko ustvarili slovar iz katerega koli predmeta:

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

Izhod:

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

Primer 3:

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

Izhod:

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

Uporaba slovarja brez uporabe __dict__ v Pythonu:

Ustvarjanje slovarja:

V Pythonu lahko slovar ustvarite tako, da priložite a seznam vnosov znotraj zavitih oklepajev in jih ločite z vejico . Slovar shranjuje pare vrednosti, kjer je en element para ključ, drugi pa njegov Ključ: vrednost . Za razliko od ključi, ki se ne morejo ponoviti in morajo biti nespremenljive, vrednosti v slovarjih so lahko katere koli vrste podatkov in se lahko podvojijo .

Elementi so ločeni z vejicami , se vsak ključ loči po svoji vrednosti z dvopičjem (:), in celotna struktura je vsebovana v zavit oklepaj . Slovar, ki je popolnoma brez vseh besed, je napisan takole: {} .

Ključi slovarja morajo biti nespremenljiv , kot naprimer cela števila, tuple ali nize , čeprav so vrednosti lahko katere koli vrste. V slovarjih Python se isto ime ključa, ki je napisano drugače, obravnava kot poseben ključ. Upoštevajte to slovarski ključi razlikujejo med velikimi in malimi črkami ; ključi s podobnim imenom, vendar z različnimi velikimi in malimi črkami, bodo obravnavani drugače.

Primer:

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

Izhod:

 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 vgrajena metoda dict() omogoča tudi ustvarjanje slovarjev . Preprosto povedano dva zavita oklepaja {} skupaj bo povzročilo prazen slovar .

Primer:

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

Izhod:

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

Zapletenosti pri ustvarjanju slovarja:

  • Časovna zahtevnost: O(dolžina(dikt))
  • Kompleksnost prostora: O(n)

Ugnezdeni slovarji:

Je oblika slovarja, kjer je ena ali več kot ena keys ima kot vrednost pripet slovar od ključa.

Primer:

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

Izhod:

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

Dodajanje elementov v slovar:

obstajajo več načinov za dodajanje elementov v slovar Python. S podajanjem vrednosti in ključa skupaj, npr. Dict[Key] = 'Vrednost', v slovar je lahko dodana ena vrednost hkrati. Uporabljati vgrajena funkcija update(). , lahko spremenite obstoječo vrednost v slovarju. Obstoječi slovar je mogoče tudi razširiti z ugnezdene ključne vrednosti .

Opomba: Ko dodajate vrednost, se vrednost posodobi, če kombinacija ključa in vrednosti že obstaja. Če ni, sta v slovar dodana nov ključ in vrednost.

Primer:

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

Izhod:

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

Zapletenosti pri dodajanju elementov v slovar:

  • Časovna zapletenost: O(1)/O(n)
  • Kompleksnost prostora: O(1)

Dostopanje do elementov slovarja:

Slovar uporablja ključi , medtem ko druge vrste podatkov zahtevajo indeksiranje za pridobivanje vrednosti. Ključe lahko uporabljate z funkcijo get(). oz znotraj oglatih oklepajev [].

V primeru, da a ključa ni mogoče najti v slovarju, Nastane KeyError če uporabljamo oglati oklepaji []. Po drugi strani pa, če ključa ni mogoče najti, funkcija get() vrne None.

Primer:

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

Izhod:

 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 

Zapletenosti pri dostopanju do elementov v slovarju:

  • Časovna zapletenost: O(1)
  • Kompleksnost prostora: O(1)

Dostop do elementa ugnezdenega slovarja:

Pomagamo lahko pri tehnika indeksiranja []. da dobite vrednost obstoječega ključa v ugnezdeni slovar .

kje najdem nastavitve brskalnika

Primer:

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

Izhod:

 {3: 'JavatPoint'} JavatPoint Website 

Metode vgrajenega slovarja:

počisti():

Funkcija dict.clear() odpravi vsak par ključ-vrednost iz slovarja.

kopirati() :

A plitkejši izvod slovarja vrne metoda dict.copy().

fromkeys():

Uporaba priloženega iterable (niz, seznam, niz ali tuple) kot ključe in podano vrednost, funkcija dict.fromkeys() ustvari nov slovar .

get():

to daje povezano vrednost z danim ključem.

predmeti():

A objekt pogleda slovarja , ki ponuja dinamično predstavitev slovarskih postavk kot seznam parov ključ-vrednost se vrne s funkcijo dict.items(). Ko se slovar posodobi, to posodobljen je tudi predmet pogleda .

dict.keys():

Funkcija dict.keys() vrne objekt pogleda slovarja s slovarjem seznam ključev.

pop():

to vrne vrednost ključa po njegovi odstranitvi . Če v slovarju manjka ključ, vrže a KeyError ali vrne privzeta vrednost če je bil zagotovljen.

popitem() :

to odstrani eno postavko iz slovarja in vrne torko parov (ključ, vrednost). The Zadnji vstop, prvi ven (LIFO) zaporedje se uporablja za vračanje parov.

setdefault():

to vrne vrednost slovarja za podani ključ . Če ključa ni mogoče odkriti, ključ s priloženim privzeta vrednost je dodan. Nastavi se Noben kot privzeta vrednost če ni dobavljen.

vrednote() :

The objekt slovarskega pogleda, ki ponuja dinamičen pogled vsake vrednosti, ki je prisoten v slovarju, se vrne s funkcijo dict.values(). Ko se slovar posodobi, to posodobljen je tudi predmet pogleda .

nadgradnja() :

A slovar ali kateri koli iterable s pari ključ-vrednost , kot je tuple, je mogoče posodobiti z uporabo funkcije dict.update().

Primer:

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

Izhod:

 {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 med slovarjem in seznamom:

Podatkovne strukture, kot je a seznam in slovar so si v osnovi različni. An naročene serije artiklov lahko shranite v a seznam tako da ga lahko indeksiramo ali ponavljamo po njem. Sezname je mogoče spreminjati tudi, ko so že ustvarjeni, saj so spremenljive vrste. The Slovar Python je shranjevanje ključev vrednosti in izvajanje a zgoščena tabela . Ne sledi nobenemu posebnemu zaporedju in zahteva zgoščevalne ključe. Poleg tega omogoča hitro iskanje ključev.

A seznami elementi vsebujejo naslednje funkcije:

  • Razen če niso posebej preurejeni, so ohranijo trenutni vrstni red (na primer z razvrščanjem seznama).
  • Lahko so katere koli vrste ali celo kombinacija vrst .
  • Prek numeričnih indeksov (na osnovi nič)., lahko dostopamo do njih.

Značilnosti slovar elementi so naslednji:

  • Vsak vnos ima a vrednost in ključ .
  • Naročila so ni upravičeno .
  • Ključne vrednotese uporabljajo za dostop do elementov.Katera koli vrsta zgoščene tabele (razen dikt)se lahko uporablja za ključne vrednosti, vrste pa se lahko kombinirajo.Kakršna koli vrednost, vključno z drugimi diktati, je dovoljeno , vrste pa je mogoče kombinirati.

Uporaba:

Uporabljamo a slovar če imamo a niz različnih ključev, ki ustrezajo vrednostim , ampak a seznam ko imamo naročena skupina stvari .

Zaključek:

  • V računalniškem jeziku, slovarji so neke vrste podatkovne strukture, ki se uporabljajo za shranjevanje informacij kar je nekako povezano.
  • Vsak modul ima edinstveno lastnost, imenovano __dict__.
  • __dict__ vsebuje tabelo simbolov za modul .
  • Lastnosti elementa so shranjene v a predmet preslikave.
  • Vsak predmet v Pythonu ima lastnost, ki je označena s simbolom __dict__ .
  • Drugo ime za __dict__ je znano tudi kot objekt proxy preslikave.
  • Dve komponenti slovarja Python se imenujeta Ključi in vrednosti .
  • Ti morda ne bo prejel vaše podatke nazaj v podobnem vrstnem redu, kot ste jih vnesli, saj slovarji ne hranijo svojih podatkov v nobenem posebnem vrstnem redu.
  • Ključi bodo sestavljeni samo iz ena stvar.
  • Vrednote so lahko cela števila, seznami, seznami znotraj seznamov itd.
  • Ne sme biti več kot en vnos na ključ (podvojeni ključ ni dovoljen)
  • Ključi slovarja morajo biti nespremenljiv , kot naprimer cela števila, tuple ali nize , čeprav so vrednosti lahko katere koli vrste.
  • Slovar tipke razlikujejo med velikimi in malimi črkami ; v slovarjih Python se isto ime ključa, ki je napisano drugače, obravnava kot a ločen ključ .