logo

__dict__ i Python

I Python är en ordbok en oordnad uppsättning datavärden det kan vara används för att lagra datavärden liknande en karta. Till skillnad från andra datatyper, som bara kan innehålla ett enda värde per element, kan ordböcker också innehålla en nyckelvärde par. Att göra en ordbok mer effektiv , Nyckel-värde erbjuds.

När det gäller attributåtkomst, punkten '.' (som i x.any_attribute ) är allt som majoriteten av användarna känner till. Enkelt sagt, attributåtkomst är processen att erhålla ett objekt som är kopplat till ett du redan har . Det kan se väldigt enkelt ut för någon som använder Python utan att gå för långt in i detaljerna. Det händer dock mycket bakom kulisserna för denna relativt enkla process.

Vad är _dict_?

Varje modul har en unik egenskap som kallas __dikt__. Denna ordbok innehåller symboltabellen för modulen . De (skrivbara) egenskaperna för ett objekt lagras i en ordbok eller det andra mappningsobjektet.

För att uttrycka det enkelt, varje objekt i Python har en egenskap som indikeras av symbolen __dict__ . Dessutom har detta objekt alla egenskaper som har specificerats för det. Ett annat namn för __dict__ är mappningsproxy objekt. Vi kan använda ordboken via använda egenskapen __dict__ till ett klassobjekt.

abc med siffror

Syntax :

 object.__dict__ 

Exempel:

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

Produktion:

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

Exempel 2:

Detta exempel kommer att visa att med hjälp av __dict__ attribut , man kan skapa en ordbok av vilket objekt som helst:

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

Produktion:

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

Exempel 3:

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

Produktion:

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

Använda ordbok utan att använda __dict__ i Python:

Skapa en ordbok:

I Python kan en ordbok skapas genom att bifoga en lista över poster inom parenteser och separera dem med ett kommatecken . Ordbok lagrar värdepar, där ett parelement är nyckeln och ett annat är dess Nyckelvärde . I kontrast till nycklar, som kan inte upprepas och måste vara oföränderliga värden i ordböcker kan vara av vilken typ av data som helst och kan dupliceras .

Elementen är separerade av kommatecken , varje nyckel särskiljs från sitt värde av ett kolon (:), och hela strukturen finns i klammerparentes . En ordbok som helt saknar alla ord skrivs så här: {} .

Nycklarna till ordboken måste vara oföränderlig , Till exempel heltal, tupler eller strängar , även om värdena kan vara av vilken typ som helst. I Python-ordböcker anses samma nyckelnamn som stavas annorlunda som en tydlig nyckel. Vänligen notera det ordboksnycklar är skiftlägeskänsliga ; nycklar med liknande namn men olika skiftlägen kommer att hanteras annorlunda.

Exempel:

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

Produktion:

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

De inbyggd metod dict() tillåter också skapande av ordböcker . Enkelt uttryckt två lockiga hängslen {} tillsammans kommer att resultera i en tom ordbok .

Exempel:

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

Produktion:

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

Komplexiteter för att skapa en ordbok:

  • Tidskomplexitet: O(längd(dikt))
  • Rymdkomplexitet: På)

Kapslade ordböcker:

Det är en form av ordbok där en eller flera keys har en ordbok kopplad till sig som ett värde av nyckeln.

Exempel:

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

Produktion:

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

Tillägg av element till en ordbok:

Det finns flera metoder för att lägga till element till en Python-ordbok. Genom att ange värdet och nyckeln tillsammans, t.ex. Dict[Key] = 'Värde', ett värde kan läggas till i en ordbok åt gången. Använda inbyggd update() funktion , kan man ändra ett befintligt värde i en ordbok. En befintlig ordbok kan också utökas med kapslade nyckelvärden .

Obs! När du lägger till ett värde uppdateras värdet om nyckel-värdekombinationen redan finns. Om inte läggs en ny nyckel och ett nytt värde till i ordboken.

Exempel:

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

Produktion:

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

Komplexiteter för att lägga till element i en ordbok:

  • Tidskomplexitet: O(1)/O(n)
  • Rymdkomplexitet: O(1)

Få åtkomst till ordbokselement:

En ordbok använder nycklar , medan andra datatyper kräver indexering för att hämta värden. Nycklar kan användas med get() funktion eller inom hakparenteser [].

I händelse av att a nyckel kan inte hittas i ordboken, KeyError skapas om vi använder hakparentes []. Å andra sidan, om nyckeln inte kan lokaliseras get()-funktionen returnerar Ingen.

Exempel:

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

Produktion:

 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 

Komplexiteter för att komma åt element i en ordbok:

  • Tidskomplexitet: O(1)
  • Rymdkomplexitet: O(1)

Få åtkomst till elementet i en kapslad ordbok:

Vi kan ta hjälp av indexeringsteknik [] för att få värdet av en befintlig nyckel i kapslad ordbok .

Exempel:

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

Produktion:

sortera array java
 {3: 'JavatPoint'} JavatPoint Website 

Inbyggda ordboksmetoder:

klar() :

Funktionen dict.clear() eliminerar varje nyckel-värdepar från ordboken.

copy() :

A grundare kopia av ordboken returneras av metoden dict.copy().

fromkeys():

Använder den medföljande iterable (sträng, lista, uppsättning eller tuppel) som nycklar och det angivna värdet, funktionen dict.fromkeys() skapar en ny ordbok .

skaffa sig() :

Detta ger det tillhörande värdet med den angivna nyckeln.

objekt() :

A ordboksvyobjekt , som erbjuder en dynamisk presentation av ordboksobjekten som en lista över nyckel-värdepar returneras av funktionen dict.items(). När ordboken uppdateras, detta vyobjektet uppdateras också .

java huvudmetod

dict.keys():

Funktionen dict.keys() returnerar ett ordboksvyobjekt med ordbokens lista över nycklar.

pop() :

Detta returnerar värdet på nyckeln efter att ha tagit bort den . Om en nyckel saknas i ordboken, kastar den antingen en KeyError eller returnerar standardvärde om en sådan tillhandahölls.

drink():

Detta tar bort ett objekt från ordboken och returnerar en tupel av (nyckel, värde) par. De Sist in först ut (LIFO) sekvensen används för att returnera par.

Sätta som normalt() :

Detta returnerar ordbokens värde för den givna nyckeln . Om nyckeln inte kan hittas, nyckeln med den medföljande standardvärde är adderat. Det sätter sig Ingen som den standardvärde om den inte levereras.

värden():

De ordboksvyobjekt som erbjuder en dynamisk vy av varje värde som är som finns i ordboken, returneras av funktionen dict.values(). När ordboken uppdateras, detta vyobjektet uppdateras också .

uppdatering() :

A ordbok eller någon iterabel med nyckel-värdepar t.ex. en tuppel, kan uppdateras med funktionen dict.update().

Exempel:

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

Produktion:

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

Att skilja mellan en ordbok och en lista:

Datastrukturer som t.ex lista och en ordbok är i grunden olika. En beställda serier av varor kan förvaras i en lista så att vi kan indexera in i det eller iterera över det. Listor kan också ändras även efter att de redan har genererats eftersom de är en föränderlig typ. De Python ordbok är en nyckel-värde lagring och en implementering av en hashtabell . Den följer ingen speciell sekvens och kräver hashbara nycklar. Dessutom går det snabbt för nyckeluppslag.

A listans element innehåller följande funktioner:

  • Om de inte specifikt beställts om behålla sin nuvarande ordning (till exempel genom att sortera listan).
  • De kan vara av vilken typ som helst, eller till och med en kombination av sorter .
  • Genom numeriska (nollbaserade) index, kan vi komma åt dem.

Egenskaperna hos lexikon element är följande:

  • Varje post har en värde och en nyckel .
  • Beställningar är inte motiverat .
  • Nyckelvärdenanvänds för att komma åt element.Vilken hashbar typ som helst (andra än ett dikt)kan användas för nyckelvärden och typer kan kombineras.Något slags värdeinklusive andra dikter, är tillåtet , och typer kan kombineras.

Användning:

Vi använder a lexikon om vi har en uppsättning distinkta nycklar som motsvarar värden , men a lista när vi har en beställd grupp saker .

Slutsats :

  • På ett datorspråk, ordböcker är en sorts datastruktur som används för att hålla information det hänger ihop på något sätt.
  • Varje modul har en unik egenskap som kallas __dikt__.
  • __dikt__ innehåller symboltabellen för modulen .
  • Egenskaperna för ett element lagras i en kartläggningsobjekt.
  • Varje objekt i Python har en egenskap som indikeras av symbolen __dict__ .
  • Ett annat namn för __dict__ är också känt som mappingproxy-objekt.
  • De två komponenterna i en Python-ordbok kallas Nycklar och värderingar .
  • Du kanske inte får dina data tillbaka i samma ordning som du matar in dem eftersom ordböcker inte lagrar sina data i någon specifik ordning.
  • Nycklar kommer att bestå av bara en sak.
  • Värderingar kan vara heltal, listor, listor inuti listor , etc.
  • Det kan inte bli mer än en post per nyckel (ingen dubblettnyckel är tillåten)
  • Nycklarna till ordboken måste vara oföränderlig , Till exempel heltal, tupler eller strängar , även om värdena kan vara av vilken typ som helst.
  • Lexikon nycklar är skiftlägeskänsliga ; i Python-ordböcker anses samma nyckelnamn som stavas olika som en distinkt nyckel .