Reklame
En python-ordbog er en datastruktur, der ligner en tilknyttet matrix, der findes i andre programmeringssprog. En matrix eller en liste indekserer elementer efter position. En ordbog indekserer på den anden side elementer efter nøgler som kan være strenge. Tænk på en ordbog som uordnede sæt af nøgleværdier par.
I denne artikel introducerer vi dig til at arbejde med python-ordbogen.
Oprettelse af en ordbog
Der er flere måder at oprette en python-ordbog på. Den enkleste bruger brace-initialisering med en syntaks minder om JSON Sådan får du Python og JavaScript til at kommunikere ved hjælp af JSONI dag viser jeg dig, hvordan du bruger JSON til at sende data fra JavaScript til Python. Jeg vil dække, hvordan du opsætter en webserver sammen med al den kode, du har brug for. Læs mere .
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27}
Du kan også bruge tal som taster. Vær dog forsigtig med at bruge flydende numre som taster, da computer gemmer disse som tilnærmelser Alt hvad du behøver at vide om RAM- og hukommelsesstyring RAM er din computers kortvarige hukommelse. Hukommelsesadministration har derfor en betydelig indflydelse på systemets ydelse. Her forklarer vi, hvordan RAM fungerer, og om du kan gøre noget for at øge dens effektivitet. Læs mere .
rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} tryk regnpercent. print rain_percent [1980] # udskrifter. {1980: '17%', 1981: '15%', 1982: '10%'} 17%
Specificering af nøgleværdipar
Du kan også oprette og initialisere en ordbog ved hjælp af navneværdipar som nøgleordsargumenter til dict () konstruktør.
population = dict (Californien = 37253956, Colorado = 5029196, Connecticut = 3574097, Delaware = 897934) printpopulation. # udskrifter. {'Connecticut': 3574097, 'Delaware': 897934, 'Californien': 37253956, 'Colorado': 5029196}
Array af nøgleværdi tuples
Endnu en måde at oprette en ordbog er at bruge en række nøgleværdier. Her er det samme eksempel som ovenfor.
par = [('Californien', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] population = dict (par) printpopulation. # udskrifter. {'Connecticut': 3574097, 'Delaware': 897934, 'Californien': 37253956, 'Colorado': 5029196}
Diktforståelse
Diktforståelse giver en cool syntaks til at initialisere et dikte, hvis du kan beregne værdierne baseret på tasterne. Følgende initialiserer et diktering af tal og firkantede værdier for en række numre.
udskriv {x: x ** 2 for x i xrange (10, 20)} # udskrifter. {10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}
Hvordan virker det? Sidste del (for x i xrange (10, 20)) returnerer et interval af numre i det specificerede interval. Dikt forståelsesdelen ({x: x ** 2 ..}) løkker over dette interval og initialiserer ordbogen.
Arbejde med en Python-ordbog
Hvad kan du gøre med ordbøger, når du først har oprettet dem? Nå, du kan få adgang til elementer, opdatere værdier, slette elementer osv.
Adgang til Python Dictionary Elements
Få adgang til et element af et dikter ved hjælp af nøglen inden for parenteser, ligesom du ville gøre en matrix eller en liste Sådan fungerer matriser og lister i PythonArrays og lister er nogle af de mest nyttige datastrukturer i programmeringen - selvom få mennesker bruger dem til deres fulde potentiale. Læs mere .
printpopulation ['Delaware'] # udskrifter. 897934.
Hvis nøglen er et tal, behøver du ikke tilbudene. Udtrykket ser så ud til at ligne en liste eller arrayindeksering.
print rain_percent [1980] # udskrifter. 17%
Tastens type, når du får adgang til den, skal svare til det, der er gemt i Python-ordbogen. Følgende forårsager en fejl, da de gemte taster er numre, mens adgangstasten er en streng.
x = '1980' tryk regn_percent [x] # resultater i 1 x = '1980' > 2 print rain_percent [x] KeyError: '1980'
Adgang til en ikke-eksisterende nøgle er en fejl.
rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} print rain_percent [1983] # udskrifter 1 rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} > 2 print rain_percent [1983] KeyError: 1983.
For at få adgang til en nøgle og give en standardværdi, hvis kortlægningen ikke findes, skal du bruge få() metode med standardværdi som det andet argument.
print rain_percent.get (1985, '0%') # udskrifter. 0%
Kontroller for eksistens
Hvad hvis du vil tjekke for tilstedeværelsen af en nøgle uden faktisk at forsøge at få adgang til den (og muligvis støde på en KeyError som ovenfor)? Du kan bruge i nøgleord i formen nøgle i dct som returnerer en boolsk.
print 1980 i rain_percent. tryk '1980' i rain_percent. # udskrifter. Sand. Falsk.
Vend betingelsen (dvs. sørg for, at nøglen ikke findes i Python-ordbogen) ved hjælp af formularen nøgle ikke i dct. Dette svarer til standard python negation ikke indtast dct.
tryk 1980 ikke i regn. print 1985 ikke i regn. # udskrifter. Falsk. Sand.
Ændring af elementer
Skift værdien ved at tildele den krævede nøgle.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} brugere ['alder'] = 29. udskriv brugere. # udskrifter. {'efternavn': 'Smith', 'alder': 29, 'fornavn': 'John'}
Brug den samme syntaks til at tilføje en ny kortlægning til Python-ordbogen.
brugere ['dob'] = '15 -sep-1971 ' udskriv brugere. # udskrifter. {'dob': '15 -sep-1971 ',' efternavn ':' Smith ',' alder ': 29,' fornavn ':' John '}
Opdater flere elementer i en ordbog i et billede ved hjælp af opdatering () metode.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} users.update ({'age': 29, 'dob': '15 -sep-1971 '}) udskriv brugere. # udskrifter. {'dob': '15 -sep-1971 ',' efternavn ':' Smith ',' alder ': 29,' fornavn ':' John '}
Indstil en standardværdi for en nøgle vha sæt standard(). Denne metode indstiller værdien for nøglen, hvis kortlægningen ikke findes. Den returnerer den aktuelle værdi.
# ændrer ikke den aktuelle værdi. print brugere.setdefault ('fornavn', 'Jane') # udskrifter. John # sætter værdi. print brugere.setdefault ('by', 'NY') # udskrifter. NY # Endelig værdi. udskriv brugere. # udskrifter. {'efternavn': 'Smith', 'alder': 27, 'fornavn': 'John', 'by': 'NY'}
Sletning af elementer
Slet kortlægninger i ordbogen ved hjælp af del operatør. Denne operatør returnerer ikke noget.
Du vil støde på en KeyError hvis nøglen ikke findes i ordbogen.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} del brugere ['alder'] udskriv brugere. # udskrifter. {'efternavn': 'Smith', 'fornavn': 'John'}
Brug pop () metode i stedet, når du vil have den slettede værdi tilbage.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} print brugere.pop ('alder') udskriv brugere. # udskrifter. 27. {'efternavn': 'Smith', 'fornavn': 'John'}
Hvad hvis du vil slette en nøgle, hvis den findes, uden at forårsage en fejl, hvis den ikke gør det? Du kan bruge pop () og specificer Ingen for andet argument som følger:
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} users.pop ('foo', Ingen) udskriv brugere. # udskrifter. {'efternavn': 'Smith', 'alder': 27, 'fornavn': 'John'}
Og her er en foring til at slette en masse nøgler fra en ordbog uden at forårsage en fejl på ikke-eksisterende nøgler.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27, 'dob': '15 -sep-1971 '} kort (lambda x: brugere.pop (x, ingen), ['alder', 'foo', 'dob']) udskriv brugere.
Vil du slette alle nøgler fra en ordbog? Brug klar() metode.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} users.clear () udskriv brugere. # udskrifter. {}
Looping With Python ordbøger
Python giver mange metoder til looping Sådan fungerer looper ved computerprogrammeringLoops er en af de første kontroltyper, du lærer i programmering. Du ved sandsynligvis om mens og til sløjfer, men hvad opnår en do-while-loop? Læs mere over indtastningerne i en ordbog. Vælg en der passer til dit behov.
Looping over nøgler
- Den enkleste metode til behandling af nøgler (og muligvis værdier) i rækkefølge bruger en løkke af formen:
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} for k i brugere: print k, '=>', brugere [k] # udskrifter. efternavn => Smith. alder => 27. fornavn => John.
- Ved hjælp af metoden iterkeys () fungerer nøjagtigt det samme som ovenfor. Vælg, hvilken form du vil bruge.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} for k i brugere.iterkeys (): udskriv k, '=>', brugere [k] # udskrifter. efternavn => Smith. alder => 27. fornavn => John.
- En tredje metode til at hente og behandle nøgler i en løkke involverer brug af den indbyggede funktion iter ().
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} for k in iter (brugere): print k, '=>', brugere [k] # udskrifter. efternavn => Smith. alder => 27. fornavn => John.
- Når du har brug for indekset for nøglen, der behandles, skal du bruge enumerate () indbygget funktion som vist.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} for indeks, indtast tæller (brugere): udskriv indeks, nøgle, '=>', brugere [k] # udskrifter. 0 efternavn => John. 1 alder => John. 2 fornavn => John.
Looping over nøgleværdipar
- Når du vil hente hvert nøgleværdipar med et enkelt opkald, skal du bruge iteritems ().
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} for k, v i brugere.iteritems (): udskriv k, '=>', v. # udskrifter. efternavn => Smith. alder => 27. fornavn => John.
Itererer over værdier
- Metoden itervalues () kan bruges til at itereere over alle værdier i ordbogen. Selvom denne metode ligner en løkke, der bruger værdier (), er det mere effektivt, da det ikke trækker ud alle værdierne på én gang.
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} for værdi i users.itervalues (): udskrivningsværdi. # udskrifter. Smith. 27. John.
Udtræk af arrays
De følgende metoder beskriver ekstraktion af forskellige Python-ordbogsinformation i en matrixform. Den resulterende matrix kan sløjpes sammen ved hjælp af normale pythonkonstruktioner. Husk dog, at det returnerede array kan være stort afhængigt af størrelsen på ordbogen. Så det kan være mere dyre (hukommelsesmæssigt) at behandle disse arrays end ved at bruge iterator-metoderne ovenfor.
Et tilfælde, hvor det er acceptabelt at arbejde med disse arrays, er, når du skal slette elementer fra ordbogen, da du støder på uønskede elementer. Arbejde med en iterator, mens du ændrer ordbogen, kan forårsage en RuntimeError.
- Metoden poster () returnerer en matrix med nøgleværdi tupler. Du kan iterere over disse nøgleværdipar som vist:
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} for k, v i brugere.emner (): udskriv k, '=>', v. # udskrifter. efternavn => Smith. alder => 27. fornavn => John.
- Hent alle nøgler i ordbogen ved hjælp af metoden nøgler ().
brugere = {'fornavn': 'John', 'efternavn': 'Smith', 'alder': 27} udskriv brugere.taster () # udskrifter. ['efternavn', 'alder', 'fornavn']
Brug det returnerede array til at sløjfe over tasterne.
for k i users.keys (): udskriv k, '=>', brugere [k] # udskrifter. efternavn => Smith. alder => 27. fornavn => John.
- Brug metoden på en lignende måde værdier () for at hente alle værdier i ordbogen.
for værdi i brugere.værdier (): udskrivningsværdi. # udskrifter. Smith. 27. John.
Hvordan bruger du Python-ordbøger?
Vi har forsøgt at dække de mest almindelige brugssager for pythonordbøger i denne artikel. Sørg for at tjekke alle vores andre Python-artikler 10 grundlæggende Python-eksempler, der kan hjælpe dig med at lære hurtigtDenne artikel med grundlæggende pythoneksempler er for dem, der allerede har en vis programmeringserfaring og blot ønsker at skifte til Python så hurtigt som muligt. Læs mere for lige flere Python-tip 5 kurser, der tager dig fra Python Beginner til ProDisse fem kurser lærer dig alt om programmering i Python, et af de hotteste sprog derude lige nu. Læs mere . Hvis du har andre brugssager, som du mener skal inkluderes, så fortæl os det i kommentarerne nedenfor!
Billedkreditter: viper345 / Shutterstock