logo

__dict__ în Python

În Python, un dicționar este un set neordonat de valori de date asta ar putea fi folosit pentru stocarea valorilor datelor asemănător cu o hartă. Spre deosebire de alte tipuri de date, care pot include doar o singură valoare per element, dicționarele pot conține și a valoare cheie pereche. Pentru a face dicționarul mai eficient , Se oferă cheie-valoare.

Când este vorba de accesul la atribut, punctul '.' (ca în x.orice_atribut ) este tot ceea ce majoritatea utilizatorilor sunt familiarizați. Pur și simplu spus, accesul la atribute este procesul de obținere a unui obiect care este conectat la unul pe care îl aveți deja . Poate părea foarte simplu pentru cineva care folosește Python fără a merge prea departe în detalii. Cu toate acestea, se întâmplă multe în culise pentru acest proces relativ simplu.

Ce este _dict_?

Fiecare modul are o proprietate unică numită __dict__. Acest dicționar conține tabelul de simboluri pentru modul . Caracteristicile (inscriptibile) ale unui articol sunt stocate într-un dicționar sau în alt obiect de mapare.

polimorfism java

Pentru a spune simplu, fiecare obiect din Python are un proprietate care este indicată prin simbolul __dict__ . În plus, acest obiect are toate proprietățile care au fost specificate pentru el. Un alt nume pentru __dict__ este mappingproxy obiect. Putem folosi dicționarul via aplicând proprietatea __dict__ la un obiect de clasă.

Sintaxa:

 object.__dict__ 

Exemplu:

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

Ieșire:

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

Exemplul 2:

Acest exemplu va demonstra că prin intermediul __dict__ atribut , se poate crea un dicționar din orice obiect:

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

Ieșire:

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

Exemplul 3:

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

Ieșire:

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

Utilizarea dicționarului fără utilizarea lui __dict__ în Python:

Crearea unui dictionar:

În Python, un dicționar poate fi făcut prin anexarea a listă de intrări în paranteze și separându-le cu virgulă . Dicționarul stochează perechi de valori, unde un element pereche este Cheia și altul este al acestuia Valoare cheie . In contrast cu chei, care nu pot fi repetate și trebuie să fie imuabile, valori în dicționare poate fi de orice tip de date și poate fi duplicat .

Elementele sunt separate prin virgule , fiecare cheie se distinge de valoarea sa cu două puncte (:), iar întreaga structură este cuprinsă în paranteze . Un dicționar care este complet lipsit de toate cuvintele este scris după cum urmează: {} .

Cheile dicționarului trebuie să fie imuabil , ca numere întregi, tupluri sau șiruri de caractere , deși valorile pot fi de orice tip. În dicționarele Python, același nume de cheie scris diferit este considerat ca o cheie distinctă. Vă rugăm să rețineți că cheile de dicționar sunt sensibile la majuscule ; cheile cu nume similar, dar cu majuscule distincte vor fi tratate diferit.

Exemplu:

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

Ieșire:

 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 metoda încorporată dict() permite de asemenea crearea de dicționare . Pur și simplu pune două bretele {} împreună vor avea ca rezultat o dicționar gol .

Exemplu:

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

Ieșire:

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

Complexități pentru crearea unui dicționar:

  • Complexitatea timpului: O (lungime (dict))
  • Complexitatea spațiului: Pe)

Dicționare imbricate:

Este o formă de dicționar în care unul sau mai multe keys are un dicționar atașat ca valoare a cheii.

alăturare stânga vs alăturare dreapta

Exemplu:

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

Ieșire:

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

Adăugarea de elemente la un dicționar:

Sunt mai multe metode de adăugare a elementelor la un dicționar Python. Specificând valoarea și cheia împreună, de exemplu, Dict[Key] = „Valoare”, o valoare poate fi adăugată la un dicționar la un moment dat. Folosind funcția de actualizare () încorporată , se poate modifica o valoare existentă într-un dicționar. Un dicționar existent poate fi, de asemenea, extins cu valori cheie imbricate .

Notă: Când adăugați o valoare, valoarea este actualizată dacă combinația cheie-valoare există deja. Dacă nu, o cheie și o valoare nouă sunt adăugate în dicționar.

Exemplu:

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

Ieșire:

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

Complexități pentru adăugarea de elemente la un dicționar:

  • Complexitatea timpului: O(1)/O(n)
  • Complexitatea spațiului: O(1)

Accesarea elementelor dicționarului:

Un dicționar folosește chei , în timp ce alte tipuri de date necesită indexare pentru a prelua valori. Cheile pot fi utilizate cu funcția get(). sau în paranteze pătrate [].

În cazul în care a cheia nu poate fi găsită in dictionar, KeyError este produsă dacă folosim paranteza patrata []. Pe de altă parte, dacă cheia nu poate fi localizată, Funcția get() returnează Nimic.

Exemplu:

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

Ieșire:

 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 

Complexități pentru accesarea elementelor într-un dicționar:

  • Complexitatea timpului: O(1)
  • Complexitatea spațiului: O(1)

Accesarea elementului unui dicționar imbricat:

Putem lua ajutorul lui indexare [] tehnică pentru a obține valoarea unei chei existente în dicţionar imbricat .

Exemplu:

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

Ieșire:

 {3: 'JavatPoint'} JavatPoint Website 

Metode de dicționar încorporat:

clar() :

Funcția dict.clear() elimină fiecare pereche cheie-valoare din dicționar.

copie() :

A copie mai superficială a dicționarului este returnat prin metoda dict.copy().

fromkeys() :

Folosind iterabilul furnizat (șir, listă, set sau tuplu) ca chei și valoarea specificată, funcția dict.fromkeys() creează un nou dicționar .

căutare binară în java

obține() :

Acest dă valoarea asociată cu cheia dată.

articole():

A obiect de vizualizare a dicționarului , care oferă o prezentare dinamică a elementelor din dicționar ca o listă de perechi cheie-valoare este returnat prin funcția dict.items(). Când dicționarul este actualizat, aceasta obiectul de vizualizare este de asemenea actualizat .

dict.keys() :

Funcția dict.keys() returnează un obiect de vizualizare a dicționarului cu dicționarul lista de chei.

pop():

Acest returnează valoarea cheii după eliminarea acesteia . Dacă o cheie lipsește din dicționar, fie aruncă a KeyError sau returnează valoare implicită dacă s-a oferit unul.

băutură() :

algoritm de programare round robin

Acest elimină un element din dicționar și returnează un tuplu de perechi (cheie, valoare). The Last In First Out (LIFO) secvența este folosită pentru perechile care revin.

setdefault() :

Acest returnează valoarea dicționarului pentru cheia dată . Dacă cheia nu poate fi descoperită, cheia cu cea furnizată valoare implicită e adăugat. Se fixează Nici unul dupa cum valoare implicită dacă nu este furnizat.

valori () :

The obiect de vizualizare dicționar care oferă o vizualizare dinamică a fiecărei valori care este prezent în dicționar, este returnat prin funcția dict.values(). Când dicționarul este actualizat, aceasta obiectul de vizualizare este de asemenea actualizat .

Actualizați() :

A dicționar sau orice iterabil cu perechi cheie-valoare , cum ar fi un tuplu, poate fi actualizat folosind funcția dict.update().

Exemplu:

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

Ieșire:

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

Diferența dintre un dicționar și o listă:

Structuri de date precum a o listă și un dicționar sunt fundamental diferite. Un serie comandată de articole poate fi stocat într-o listă astfel încât să putem indexa în ea sau repeta peste el. Listele pot fi, de asemenea, modificate chiar și după ce au fost deja generate, deoarece sunt de tip modificabil. The Dicționar Python este o stocare cheie-valoare și o implementare a a masa hash . Nu urmează nicio secvență anume și necesită chei hashable. În plus, este rapid pentru căutări cheie.

A listei elementele conțin următoarele caracteristici:

  • Dacă nu sunt reordonate în mod special, acestea păstrează ordinea lor curentă (de exemplu, prin sortarea listei).
  • Ele pot fi de orice tip, sau chiar a combinație de feluri .
  • Prin indici numerici (bazat pe zero)., le putem accesa.

Caracteristicile lui dicţionar elementele sunt următoarele:

  • Fiecare intrare are un valoare și o cheie .
  • Comenzile sunt nu este garantat .
  • Valorile cheiesunt folosite pentru a accesa elemente.Orice tip de hashtable (altul decât un dict)pot fi utilizate pentru valorile cheie, iar tipurile pot fi combinate.Orice fel de valoare, inclusiv alte dicte, este permis , iar tipurile pot fi combinate.

Utilizare:

Folosim a dicţionar dacă avem un set de chei distincte care corespund unor valori , dar a listă când avem un grup ordonat de lucruri .

Concluzie:

  • Într-un limbaj de calculator, dicționarele sunt un fel de structură de date folosită pentru a păstra informații care este cumva legat.
  • Fiecare modul are o proprietate unică numită __dict__.
  • __dict__ conține tabelul de simboluri pentru modul .
  • Proprietățile unui element sunt stocate în a obiect de cartografiere.
  • Fiecare obiect din Python are un proprietate care este indicată prin simbolul __dict__ .
  • Un alt nume pentru __dict__ este cunoscut și ca obiect mappingproxy.
  • Cele două componente ale unui dicționar Python sunt numite Chei și valori .
  • Tu s-ar putea să nu primească datele dvs. înapoi în ordinea similară în care le-ați introdus, deoarece dicționarele nu își păstrează datele într-o anumită ordine.
  • Cheile vor consta doar din un lucru.
  • Valorile pot fi numere întregi, liste, liste din interiorul listelor , etc.
  • Nu poate fi mai mult de o intrare pe tastă (nu este permisă cheia duplicată)
  • Cheile dicționarului trebuie să fie imuabil , ca numere întregi, tupluri sau șiruri de caractere , deși valorile pot fi de orice tip.
  • Dicţionar tastele sunt sensibile la majuscule ; în dicționarele Python, același nume de cheie scris diferit este considerat a cheie distinctă .