logo

__dict__ i Python

I Python er en ordbok en uordnet sett med dataverdier det kan være brukes til å lagre dataverdier på samme måte som et kart. I motsetning til andre datatyper, som bare kan inneholde en enkelt verdi per element, kan ordbøker også inneholde en nøkkel:verdi par. For å lage ordboken mer effektivt , Nøkkelverdi tilbys.

Når det gjelder attributttilgang, prikken '.' (som i x.any_attribute ) er alt de fleste brukere er kjent med. Enkelt sagt, attributttilgang er prosessen med å skaffe et objekt som er koblet til et du allerede har . Det kan se veldig enkelt ut for noen som bruker Python uten å gå for langt inn i detaljene. Det er imidlertid mye som skjer bak kulissene for denne relativt enkle prosessen.

Hva er _dict_?

Hver modul har en unik egenskap kalt __dikt__. Denne ordboken inneholder symboltabellen for modulen . De (skrivbare) egenskapene til et element lagres i en ordbok eller det andre kartobjektet.

For å si det enkelt, har hvert objekt i Python en egenskap som er indikert med symbolet __dict__ . Videre har dette objektet hver egenskap som er spesifisert for det. Et annet navn for __dict__ er mappingproxy gjenstand. Vi kan bruke ordboken via bruke egenskapen __dict__ til et klasseobjekt.

desc-tabell i mysql

Syntaks:

 object.__dict__ 

Eksempel:

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

Produksjon:

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

Eksempel 2:

Dette eksemplet vil demonstrere at ved hjelp av __dict__ attributt , kan man lage en ordbok av et hvilket som helst objekt:

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

Produksjon:

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

Eksempel 3:

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

Produksjon:

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

Bruke ordbok uten bruk av __dict__ i Python:

Opprette en ordbok:

I Python kan en ordbok lages ved å legge ved en liste over oppføringer innenfor krøllede parenteser og skille dem med et komma . Ordbok lagrer verdipar, der ett parelement er nøkkelen og et annet er dens Nøkkel:verdi . I motsetning til nøkler, hvilken kan ikke gjentas og må være uforanderlige verdier i ordbøker kan være av alle typer data og kan dupliseres .

Elementene er separert av kommaer , er hver nøkkel skilt fra verdien med et kolon (:), og hele strukturen er inneholdt i krøllparanteser . En ordbok som er fullstendig blottet for alle ord er skrevet som følger: {} .

Nøklene til ordboken må være uforanderlig , som for eksempel heltall, tupler eller strenger , selv om verdiene kan være av hvilken som helst type. I Python-ordbøker anses det samme nøkkelnavnet stavet annerledes som en tydelig nøkkel. Vær oppmerksom på det ordboknøkler skiller mellom store og små bokstaver ; nøkler med lignende navn, men forskjellige store og små bokstaver, vil bli håndtert annerledes.

Eksempel:

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

Produksjon:

 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 innebygd metode dict() gir også mulighet for opprettelse av ordbøker . Enkelt sagt to krøllete seler {} sammen vil resultere i en tom ordbok .

Eksempel:

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

Produksjon:

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

Kompleksiteter for å lage en ordbok:

  • Tidskompleksitet: O(lengde(dikt))
  • Plass kompleksitet: På)

Nestede ordbøker:

Det er en form for ordbok hvor en eller flere enn en keys har en ordbok knyttet til seg som en verdi av nøkkelen.

Eksempel:

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

Produksjon:

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

Tilføyelse av elementer til en ordbok:

Det er flere metoder for å legge til elementer til en Python-ordbok. Ved å spesifisere verdien og nøkkelen sammen, f.eks. Dict[Key] = 'Verdi', én verdi kan legges til en ordbok om gangen. Bruker innebygd update() funksjon , kan man endre en eksisterende verdi i en ordbok. En eksisterende ordbok kan også utvides med nestede nøkkelverdier .

Merk: Når du legger til en verdi, oppdateres verdien hvis nøkkel-verdi-kombinasjonen allerede eksisterer. Hvis ikke, legges en ny nøkkel og verdi til ordboken.

Eksempel:

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

Produksjon:

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

Kompleksiteter for å legge til elementer i en ordbok:

  • Tidskompleksitet: O(1)/O(n)
  • Plass kompleksitet: O(1)

Få tilgang til ordbokelementer:

En ordbok bruker nøkler , mens andre datatyper krever indeksering for å hente verdier. Nøkler kan brukes med get() funksjon eller innenfor firkantede parenteser [].

I tilfelle at a kan ikke finne nøkkelen i ordboken, KeyError er produsert hvis vi bruker firkantede parenteser []. På den annen side, hvis nøkkelen ikke kan lokaliseres get()-funksjonen returnerer Ingen.

Eksempel:

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

Produksjon:

 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 

Kompleksiteter for å få tilgang til elementer i en ordbok:

  • Tidskompleksitet: O(1)
  • Plass kompleksitet: O(1)

Få tilgang til elementet i en nestet ordbok:

Vi kan ta hjelp av indeksering [] teknikk for å få verdien av en eksisterende nøkkel i nestet ordbok .

Eksempel:

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

Produksjon:

 {3: 'JavatPoint'} JavatPoint Website 

Innebygde ordbokmetoder:

clear() :

Funksjonen dict.clear() eliminerer hvert nøkkelverdi-par fra ordboken.

kopi() :

EN grunnere kopi av ordboken returneres av dict.copy()-metoden.

fromkeys():

Bruker den medfølgende iterable (streng, liste, sett eller tuppel) som taster og den angitte verdien, funksjonen dict.fromkeys() oppretter en ny ordbok .

få() :

Dette gir verdien knyttet med den oppgitte nøkkelen.

elementer() :

EN ordbokvisningsobjekt , som tilbyr en dynamisk presentasjon av ordbokelementene som en liste over nøkkelverdi-par er returnert av funksjonen dict.items(). Når ordboken er oppdatert, dette visningsobjektet er også oppdatert .

dict.keys():

Funksjonen dict.keys() returnerer et ordbokvisningsobjekt med ordbokens liste over nøkler.

sammenligne i java

pop():

Dette returnerer verdien til nøkkelen etter å ha fjernet den . Hvis en nøkkel mangler i ordboken, kaster den enten en KeyError eller returnerer standardverdi hvis en ble gitt.

drink():

Dette fjerner ett element fra ordboken og returnerer en tuppel av (nøkkel, verdi) par. De Sist inn først ut (LIFO) sekvensen brukes for å returnere par.

sett standard() :

Dette returnerer ordbokens verdi for den gitte nøkkelen . Hvis nøkkelen ikke kan oppdages, nøkkelen med den medfølgende standardverdi er lagt til. Det setter seg Ingen som standardverdi hvis den ikke leveres.

verdier() :

De ordbokvisningsobjekt som tilbyr en dynamisk visning av hver verdi som er tilstede i ordboken, returneres av funksjonen dict.values(). Når ordboken er oppdatert, dette visningsobjektet er også oppdatert .

Oppdater() :

EN ordbok eller hvilken som helst gjentakelig med nøkkelverdi-par , for eksempel en tuppel, kan oppdateres ved å bruke funksjonen dict.update().

Eksempel:

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

Produksjon:

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

Skille mellom en ordbok og en liste:

Datastrukturer som f.eks liste og en ordbok er grunnleggende forskjellige. An bestilt serie med varer kan lagres i en liste slik at vi kan indeksere den eller iterere over den. Lister kan også endres selv etter at de allerede er generert siden de er en utskiftbar type. De Python-ordbok er en nøkkelverdilagring og en implementering av en hasjtabell . Den følger ingen spesiell sekvens og krever hashbare nøkler. I tillegg er det raskt for nøkkeloppslag.

EN listens elementer inneholder følgende funksjoner:

  • Med mindre de er spesifikt ombestilt, vil de beholde sin nåværende rekkefølge (for eksempel ved å sortere listen).
  • De kan være av hvilken som helst type, eller til og med en kombinasjon av slag .
  • Gjennom numeriske (nullbaserte) indekser, kan vi få tilgang til dem.

Egenskapene til ordbok elementer er som følger:

  • Hver oppføring har en verdi og en nøkkel .
  • Bestillinger er ikke berettiget .
  • Nøkkelverdierbrukes for å få tilgang til elementer.Enhver hashbar type (annet enn en dict)kan brukes for nøkkelverdier, og typer kan kombineres.Enhver form for verdi, inkludert andre dicts, er tillatt , og typer kan kombineres.

Bruk:

Vi bruker en ordbok hvis vi har en sett med distinkte nøkler som tilsvarer verdier , men a liste når vi har en bestilte en gruppe ting .

Konklusjon :

  • På et dataspråk, ordbøker er en slags datastruktur som brukes til å holde informasjon det er på en eller annen måte relatert.
  • Hver modul har en unik egenskap kalt __dikt__.
  • __dikt__ inneholder symboltabellen for modulen .
  • Egenskapene til et element er lagret i en kartleggingsobjekt.
  • Hvert objekt i Python har en egenskap som er indikert med symbolet __dict__ .
  • Et annet navn for __dict__ er også kjent som mappingproxy-objekt.
  • De to komponentene i en Python-ordbok kalles Nøkler og verdier .
  • Du kanskje ikke mottar dataene dine tilbake i samme rekkefølge som du legger dem inn, siden ordbøker ikke oppbevarer dataene i noen bestemt rekkefølge.
  • Nøkler vil bestå av bare en ting.
  • Verdier kan være heltall, lister, lister inne i lister , etc.
  • Det kan ikke være mer enn én oppføring per nøkkel (ingen duplikatnøkkel er tillatt)
  • Nøklene til ordboken må være uforanderlig , som for eksempel heltall, tupler eller strenger , selv om verdiene kan være av hvilken som helst type.
  • Ordbok nøklene skiller mellom store og små bokstaver ; i Python-ordbøker blir det samme nøkkelnavnet stavet annerledes betraktet som et distinkt nøkkel .