Python Dictionary Hvordan kan du bruke den til å skrive bedre kode

Python Dictionary Hvordan kan du bruke den til å skrive bedre kode / programmering

En pythonordbok er en datastruktur som ligner på en assosiativ array som finnes i andre programmeringsspråk. Et array eller en liste indekserer elementer etter posisjon. En ordbok, derimot, indekserer elementer av nøkler som kan være strenger. Tenk på en ordbok som uordnede sett av nøkkelverdi parene.

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

Opprette en ordbok

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

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

Du kan også bruke tall som tastene. Vær imidlertid forsiktig med å bruke flytende punktnumre som nøkler, siden datamaskinen lagrer disse som tilnærminger Alt du trenger å vite om RAM og minnehåndtering Alt du trenger å vite om RAM og minnehåndtering RAM er datamaskinens korttidshukommelse. 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% 

Angi nøkkelparametre

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

befolkning = dikt (California = 37253956, Colorado = 5029196, Connecticut = 3574097, Delaware = 897934) print befolkning # utskrifter 'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956 'Colorado': 5029196 

Array of Key-Value Tuples

Enda en annen måte å lage en ordliste på er å bruke en rekke nøkkelverdige tupler. Her er det samme eksemplet som ovenfor.

par = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)] befolkning = dikt 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196 

Dikt forståelse

Dikt forståelse gir en kul syntaks for å initialisere en dikt hvis du kan beregne verdiene basert på nøklene. Følgende initialiserer en dikt av tall og firkantverdier for en rekke tall.

skriv ut 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 en rekke tall i det angitte området. Dikt forståelse del (x: x ** 2 ...) looper over dette området og initialiserer ordboken.

Arbeide med en pythonordbok

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 dikt ved å bruke nøkkelen i parentes, akkurat som du vil en matrise eller en liste. Hvordan Arrayer og Lister Arbeid i Python. Hvordan Arrayer og Lister Arbeider i Python Arrayer og lister er noen av de mest nyttige datastrukturene i programmering - selv om få mennesker bruker dem til sitt fulle potensiale. Les mer .

utskrift befolkning ['Delaware'] # utskrifter 897934 

Hvis nøkkelen er et tall, trenger du ikke anførselstegnene. Ekspressjonen ser da ut som en liste eller arrayindeksering.

skriv rain_percent [1980] # utskrifter 17% 

Typen av nøkkelen når du åpner den må samsvare med det som er lagret i Python-ordboken. Følgende forårsaker en feil siden de lagrede tastene er tall mens tilgangsnøkkelen er en streng.

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

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 print rain_percent [1983] KeyError: 1983 

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

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

Sjekker for eksistens

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

skriv ut 1980 i rain_percent print '1980' i rain_percent # utskrifter True False 

Omvend tilstanden (dvs. sikre at nøkkelen ikke er til stede i Python-ordboken) ved hjelp av skjemaet nøkkel ikke i dct. Dette tilsvarer standard python negasjonen ikke nøkkelen i dct.

skriv ut 1980 ikke i rain_percent print 1985 ikke i rain_percent # utskrifter False True 

Endrende elementer

Endre verdien ved å tilordne til ønsket nøkkel.

brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 brukere ['age'] = 29 utskrift 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 'print brukere # utskrifter ' dob ': '15 -sep-1971', 'etternavn': 'Smith', 'alder': 29, 'fornavn' John ' 

Oppdater flere elementer i en ordbok i ett skudd ved hjelp av Oppdater() metode.

brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 users.update ('age': 29, 'dob': '15 -sep- 1971 ') print brukere # utskrifter 'dob': '15 -sep-1971 ',' etternavn ':' Smith ',' alder ': 29,' fornavn ':' John ' 

Angi en standardverdi for en tast ved hjelp av sett standard(). Denne metoden angir verdien for nøkkelen hvis kartleggingen ikke eksisterer. Den returnerer gjeldende verdi.

# endrer ikke nåværende verdi utskrift users.setdefault ('fornavn', 'Jane') # utskrifter John # setter verdi utskrift users.setdefault ('city', 'NY') # utskrifter NY # Endelige verdi utskrift brukere # utskrifter ' etternavn ':' Smith ',' alder ': 27,' fornavn ':' John ',' by ':' NY ' 

Slette elementer

Slett mappings i ordboken ved hjelp av del operatør. Denne operatøren returnerer ikke noe.

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

brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 del brukere ['alder'] skrive ut brukere # utskrifter 'etternavn': 'Smith' John ' 

Bruke pop () metode i stedet, når du vil ha den slettede verdien tilbake.

brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 skrive ut brukerne ':' John ' 

Hva om du vil slette en nøkkel hvis den eksisterer, 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 users.pop ('foo', None) skriv ut brukere # utskrifter 'etternavn': 'Smith' ': 27,' fornavn ':' John ' 

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

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

Vil du slette alle taster fra en ordbok? Bruke klar() metode.

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

Looping With Python Ordbøker

Python gir mange metoder for looping Hvordan gjør-mens looper jobber i Computer Programmering Hvordan gjør-mens Loops Arbeid i Computer Programmering Looper er en av de første kontrolltypene du vil lære i programmering. Du vet sannsynligvis om mens og for looper, men hva oppnår en runde? Les mer om oppføringene i en ordbok. Velg en som passer ditt behov.

Looping Over Keys

  • Den enkleste metoden for å behandle nøkler (og eventuelt verdier) i rekkefølge bruker en sløyfe av skjemaet:
    brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 for k i brukere: print k, '=>', brukere [k] # utskrifter etternavn => Smith alder = > 27 fornavn => John 
  • Bruke metoden iterkeys () virker nøyaktig det samme som ovenfor. Velg hvilken form du vil bruke.
    brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 for k i users.iterkeys (): print k, '=>', brukere [k] # utskrifter etternavn = > Smith alder => 27 fornavn => John 
  • En tredje metode for å hente og behandle nøkler i en løkke involverer bruk av den innebygde funksjonen ITER ().
    brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 for k i iter (brukere): print k, '=>', brukere [k] # utskrifter lastname => Smith alder => 27 fornavn => John 
  • Når du trenger indeksen for nøkkelen som behandles, bruker du oppsummere () innebygd funksjon som vist.
    brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 for indeksen, tast inn oppregner (brukere): Skriv ut indeks, nøkkel, '=>', brukere [k] utskrifter 0 etternavn => John 1 alder => John 2 fornavn => John 

Looping Over Key-Value Par

  • Når du vil hente hvert nøkkelverdi-par med en enkelt samtale, bruker du iteritems ().
    brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 for k, v i users.iteritems (): print k, '=>', v # utskrifter etternavn => Smith alder => 27 fornavn => John 

Iterering over verdier

  • Metoden itervalues ​​() kan brukes til å iterere over alle verdiene i ordboken. Selv om denne metoden ser ut som en loop med verdier (), det er mer effektivt siden det ikke trekker ut alle verdiene samtidig.
    brukere = 'fornavn': 'John', 'etternavn': 'Smith', 'alder': 27 for verdi i users.itervalues ​​(): utskriftsverdi # utskrifter Smith 27 John 

Uttrekkingsarrayer

Følgende metoder beskriver utvinning av ulike Python-ordlisteinformasjon i en matriseform. Den resulterende matrise kan sløyfes over ved bruk av normale pythonkonstruksjoner. Vær imidlertid oppmerksom på at den returnerte gruppen kan være stor avhengig av størrelsen på ordlisten. Så det kan være mer dyrt (minne-vis) å behandle disse arraysene enn å bruke iteratormetodene ovenfor.

Ett tilfelle der det er akseptabelt å arbeide med disse arrays er når du må slette elementer fra ordlisten når du møter uønskede elementer. Å jobbe med en iterator mens du endrer ordlisten, kan forårsake en RuntimeError.

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

    Bruk den returnerte gruppen til å sløyfe over tastene.

    for k i users.keys (): print k, '=>', brukere [k] # utskrifter etternavn => Smith alder => 27 fornavn => John 
  • På samme måte bruker du metoden verdier () for å hente alle verdiene i ordboken.
    for verdi i users.values ​​(): utskriftsverdi # utskrifter Smith 27 John 

Hvordan bruker du Python-ordbøker?

Vi har forsøkt å dekke de vanligste brukssakene til pythonordbøker i denne artikkelen. Sørg for å sjekke ut alle våre andre Python-artikler. 10 Grunnleggende Python-eksempler som hjelper deg med å lære raskt. 10 Grunnleggende Python-eksempler som vil hjelpe deg med å lære deg raskt. Denne artikkelen av grunnleggende python-eksempler er for de som allerede har noen programmeringserfaring og bare vil Overgang til Python så raskt som mulig. Les mer for enda flere Python tips 5 Kurs som tar deg fra Python Nybegynner til Pro 5 Kurs som tar deg fra Python Beginner til Pro Disse fem kursene vil lære deg alt om programmering i Python, et av de heteste språkene der ute akkurat nå. Les mer . Hvis du har andre brukstilfeller som du føler bør være med, vennligst gi oss beskjed i kommentarene nedenfor!

Image Credits: viper345 / Shutterstock

Utforsk mer om: Python.