Annonse

En python-ordbok er en datastruktur som ligner en assosiativ matrise som finnes i andre programmeringsspråk. En matrise eller en liste indekserer elementer etter posisjon. En ordbok indekserer derimot elementer etter nøkler som kan være strenger. Tenk på en ordbok som uordnede sett med nøkkelverdi par.

et par av pythonordbokens nøkkelverdi

I denne artikkelen introduserer vi deg for å jobbe med python-ordboken.

Opprette en ordbok

Det er flere måter å lage en python-ordbok på. Det enkleste bruker staginitialisering, med en syntaks minner om JSON Hvordan få Python og JavaScript til å kommunisere ved hjelp av JSONI dag skal jeg vise deg hvordan du bruker JSON til å sende data fra JavaScript til Python. Jeg vil dekke hvordan du konfigurerer en webserver, sammen med all koden du trenger. Les mer .

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27}

Du kan bruke tall også som tastene. Vær imidlertid forsiktig med å bruke flytende punktnumre som taster, siden datamaskin lagrer disse som tilnærminger Alt du trenger å vite om RAM- og minnestyring

instagram viewer
RAM er datamaskinens korttidsminne. Derfor har minnestyring en betydelig innvirkning på systemytelsen. Her forklarer vi hvordan RAM fungerer og om du kan gjøre noe for å øke effektiviteten. Les mer .

rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} print rain_percent. print rain_percent [1980] # utskrifter. {1980: '17%', 1981: '15%', 1982: '10%'} 17%

Spesifisering av nøkkelverdipar

Du kan også opprette og initialisere en ordbok ved å bruke navnverdipar som søkeordargumenter til dict () konstruktør.

befolkning = dict (California = 37253956, Colorado = 5029196, Connecticut = 3574097, Delaware = 897934) trykkpopulasjon. # utskrifter. {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Array of Key-Value Tuples

Enda en måte å lage en ordbok på er å bruke en rekke tuval av nøkkelverdi. Her er det samme eksemplet som ovenfor.

par = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] populasjon = dikt (par) trykkpopulasjon. # utskrifter. {'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Diktforståelse

Diktforståelse gir en kul syntaks for å initialisere en dikter hvis du kan beregne verdiene basert på tastene. Følgende initialiserer en diktering av tall og firkantede verdier for et antall tall.

skriv {x: x ** 2 for x i xrange (10, 20)} # utskrifter. {10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361}

Hvordan virker det? Den siste delen (for x i xrange (10, 20)) returnerer et antall tall i det angitte området. Delens forståelsesdel ({x: x ** 2 ..}) løkker over dette området og initialiserer ordboken.

Arbeide med en Python-ordbok

Hva kan du gjøre med ordbøker når du har opprettet dem? Vel, du kan få tilgang til elementer, oppdatere verdier, slette elementer osv.

Få tilgang til Python Dictionary Elements

Få tilgang til et element av en dikter ved hjelp av nøkkelen i parentes, akkurat som du ville gjort en matrise eller en liste Hvordan arrays og lister fungerer i PythonArrays og lister er noen av de mest nyttige datastrukturene i programmering - selv om få mennesker bruker dem til sitt fulle potensiale. Les mer .

trykk populasjon ['Delaware'] # utskrifter. 897934.

Hvis nøkkelen er et tall, trenger du ikke sitatene. Uttrykket ser så ut til å se ut som en liste eller matriseindeksering.

print rain_percent [1980] # utskrifter. 17%

Nøkkeltypen når du får tilgang til den, må samsvare med hva som er lagret i Python-ordboken. Følgende forårsaker en feil siden de lagrede tastene er numre mens tilgangstasten er en streng.

x = '1980' print rain_percent [x] # resultater i 1 x = '1980' > 2 trykk rain_percent [x] KeyError: '1980'

Få tilgang til en ikke-eksisterende nøkkel er en feil.

rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} print rain_percent [1983] # utskrifter 1 rain_percent = {1980: '17% ', 1981: '15%', 1982: '10% '} > 2 trykk rain_percent [1983] KeyError: 1983.

For å få tilgang til en nøkkel og gi en standardverdi hvis kartleggingen ikke eksisterer, bruker du få() metode med standardverdi som det andre argumentet.

print rain_percent.get (1985, '0%') # utskrifter. 0%

Kontroller for eksistens

Hva om du vil se etter tilstedeværelsen av en nøkkel uten å prøve å få tilgang til den (og muligens støte på en KeyError som ovenfor)? Du kan bruke i nøkkelord i skjemaet nøkkel i dct som returnerer en boolsk.

trykk 1980 i rain_percent. trykk '1980' i regn_percent. # utskrifter. Ekte. Falsk. 

Vend betingelsen (dvs. sørg for at nøkkelen ikke er til stede i Python-ordboken) ved å bruke skjemaet nøkkel ikke i dct. Dette tilsvarer standard pytonnegering ikke tast inn dct.

trykk 1980 ikke i regn. trykk 1985 ikke i regn. # utskrifter. Falsk. Ekte. 

Endre elementer

Endre verdien ved å tilordne den nødvendige tasten.

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} brukere ['alder'] = 29. trykk brukere. # utskrifter. {'etternavn': 'Smith', 'alder': 29, 'fornavn': 'John'}

Bruk samme syntaks for å legge til en ny kartlegging i Python-ordboken.

brukere ['dob'] = '15 -sep-1971 ' trykk brukere. # utskrifter. {'dob': '15 -sep-1971 ',' etternavn ':' Smith ',' age ': 29,' firstname ':' John '}

Oppdater flere elementer i en ordbok i ett skudd ved å bruke Oppdater() metode.

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} brukere.oppdatering ({'age': 29, 'dob': '15 -sep-1971 '}) trykk brukere. # utskrifter. {'dob': '15 -sep-1971 ',' etternavn ':' Smith ',' age ': 29,' firstname ':' John '}

Angi en standardverdi for en nøkkel ved å bruke sett standard(). Denne metoden setter verdien for nøkkelen hvis kartleggingen ikke eksisterer. Den returnerer nåværende verdi.

# endrer ikke gjeldende verdi. print users.setdefault ('fornavn', 'Jane') # utskrifter. John # setter verdi. print users.setdefault ('by', 'NY') # utskrifter. NY # Endelig verdi. trykk brukere. # utskrifter. {'etternavn': 'Smith', 'alder': 27, 'fornavn': 'John', 'city': 'NY'}

Slette elementer

Slette kartlegginger i ordboken ved å bruke del operatør. Denne operatøren returnerer ikke noe.

Du vil møte en KeyError hvis nøkkelen ikke finnes i ordboken.

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} del brukere ['alder'] trykk brukere. # utskrifter. {'etternavn': 'Smith', 'fornavn': 'John'}

Bruke pop () i stedet når du vil slette den slettede verdien.

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} printbrukere.pop ('alder') trykk brukere. # utskrifter. 27. {'etternavn': 'Smith', 'fornavn': 'John'}

Hva om du vil slette en nøkkel hvis den finnes, uten å forårsake en feil hvis den ikke gjør det? Du kan bruke pop () og spesifiser Ingen for andre argument som følger:

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} brukere.pop ('foo', Ingen) trykk brukere. # utskrifter. {'etternavn': 'Smith', 'alder': 27, 'fornavn': 'John'}

Og her er en foring for å slette en haug med nøkler fra en ordbok uten å forårsake en feil på ikke-eksisterende nøkler.

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27, 'dob': '15 -sep-1971 '} kart (lambda x: brukere.pop (x, ingen), ['alder', 'foo', 'dob']) trykk brukere.

Vil du slette alle nøkler fra en ordbok? Bruke klar() metode.

brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} users.clear () trykk brukere. # utskrifter. {}

Looping With Python Dictionaries

Python gir mange metoder for looping Slik fungerer looper i dataprogrammeringLooper er en av de første kontrolltypene du lærer i programmering. Du vet sikkert om mens og for løkker, men hva oppnår en gjør-mens-loop? Les mer over oppføringene i en ordbok. Velg en som passer ditt behov.

Looping over nøkler

  • Den enkleste metoden for å behandle nøkler (og muligens verdier) i rekkefølge bruker en sløyfe av skjemaet:
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} for k i brukere: skriv ut k, '=>', brukere [k] # utskrifter. etternavn => Smith. alder => 27. fornavn => John.
  • Ved å bruke metoden iterkeys () fungerer nøyaktig det samme som ovenfor. Ta et valg om hvilket skjema du vil bruke.
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} for k i brukere.iterkeys (): skriv ut k, '=>', brukere [k] # utskrifter. etternavn => Smith. alder => 27. fornavn => John.
  • En tredje metode for å hente og behandle nøkler i en sløyfe innebærer å bruke den innebygde funksjonen ITER ().
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} for k in iter (brukere): skriv ut k, '=>', brukere [k] # utskrifter. etternavn => Smith. alder => 27. fornavn => John.
  • Når du trenger indeksen for nøkkelen som behandles, bruker du nummerere () innebygd funksjon som vist.
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} for indeks, tast inntelling (brukere): utskriftsindeks, nøkkel, '=>', brukere [k] # utskrifter. 0 etternavn => John. 1 alder => John. 2 fornavn => John.

Looping over nøkkelverdi par

  • Når du vil hente hvert nøkkelverdipar med en enkelt samtale, bruk iteritems ().
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} for k, v i brukere.iteritems (): skriv ut k, '=>', v. # utskrifter. etternavn => Smith. alder => 27. fornavn => John.

Iterating Over Values

  • Metoden itervalues ​​() kan brukes til å iterere over alle verdiene i ordboken. Selv om denne metoden ligner en sløyfe som bruker verdier (), er den mer effektiv siden den ikke trekker ut alle verdiene på en gang.
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} for verdi i users.itervalues ​​(): utskriftsverdi. # utskrifter. Smith. 27. John.

Utvinning av matriser

De følgende metodene beskriver utvinning av forskjellige Python-ordboksinformasjon i en matriseform. Den resulterende matrisen kan sløyfes sammen ved bruk av normale pytonkonstruksjoner. Husk imidlertid at den returnerte matrisen kan være stor, avhengig av størrelsen på ordboken. Så det kan være mer dyre (minnemessig) å behandle disse matriser enn å bruke iterator-metodene ovenfor.

Et tilfelle der det er akseptabelt å jobbe med disse matriser, er når du trenger å slette elementer fra ordboken når du støter på uønskede elementer. Å jobbe med en iterator mens du endrer ordboken kan føre til en RuntimeError.

  • Metoden elementer () returnerer en rekke nøkkelverdi tupler. Du kan iterere over disse nøkkelverdiparene som vist:
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} for k, v i users.items (): skriv ut k, '=>', v. # utskrifter. etternavn => Smith. alder => 27. fornavn => John.
  • Hent alle tastene i ordboken ved hjelp av metoden nøkler ().
    brukere = {'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27} skriv ut brukere.nøkler () # utskrifter. ['etternavn', 'alder', 'fornavn']

    Bruk det returnerte arrayet til å sløyfe over tastene.

    for k i users.keys (): skriv ut k, '=>', brukere [k] # utskrifter. etternavn => Smith. alder => 27. fornavn => John.
  • Bruk metoden på en lignende måte verdier () for å hente alle verdiene i ordboken.
    for verdi i brukere.verdier (): utskriftsverdi. # utskrifter. Smith. 27. John. 

Hvordan bruker du Python-ordbøker?

Vi har forsøkt å dekke de vanligste brukssakene for pythonordbøker i denne artikkelen. Sørg for å sjekke ut alle våre andre Python-artikler 10 grunnleggende Python-eksempler som vil hjelpe deg å lære rasktDenne artikkelen med grunnleggende pythoneksempler er for de som allerede har en viss programmeringserfaring og ganske enkelt vil gå over til Python så raskt som mulig. Les mer til og med flere Python-tips 5 kurs som tar deg fra Python nybegynner til proffDisse fem kursene lærer deg alt om programmering i Python, et av de hotteste språkene der ute akkurat nå. Les mer . Hvis du har andre brukssaker du mener bør inkluderes, vennligst gi oss beskjed i kommentarene nedenfor!

Bildekreditter: viper345 / Shutterstock