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

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

En pythonordbok er en datastruktur som ligner en assosiativ matrise som finnes på andre programmeringsspråk. En matrise 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 med nøkkelverdi par.





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





Lage en ordbok

Det er flere måter å lage en pythonordbok på. Den enkleste bruken av brace -initialisering, med en syntaks som minner om JSON.





users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}

Du kan også bruke tall som tastene. Vær imidlertid forsiktig med å bruke flytende tall som nøkler, siden datamaskinen lagrer disse som tilnærminger.

rain_percent = { 1980: '17%', 1981: '15%', 1982: '10%'}
print(rain_percent)
print(rain_percent[1980])
# prints
{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 () bygger.



bærbar datamaskin plugget inn, lader ikke
population = dict(California=37253956, Colorado=5029196, Connecticut=3574097, Delaware=897934)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Array of Key-Value Tuples

Nok en måte å lage en ordbok er å bruke en rekke nøkkelverdier. Her er det samme eksemplet som ovenfor.

pairs = [('California', 37253956), ('Colorado', 5029196), ('Connecticut', 3574097), ('Delaware', 897934)]
population = dict(pairs)
print(population)
# prints
{'Connecticut': 3574097, 'Delaware': 897934, 'California': 37253956, 'Colorado': 5029196}

Diktforståelse

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





print({x: x**2 for x in xrange(10, 20)})
# prints
{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 tallområde i det angitte området. Diktforståelsesdelen ( {x: x ** 2 ..} ) går over dette området og initialiserer ordboken.

Arbeide med en Python -ordbok

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





Få tilgang til Python Dictionary Elements

Få tilgang til et element av en dikt ved å bruke nøkkelen i parentes, akkurat som du ville en matrise eller en liste .

print(population['Delaware'])
# prints
897934

Hvis nøkkelen er et tall, trenger du ikke anførselstegn. Uttrykket ser deretter ut til å ligne en liste eller matriseindeksering.

print(rain_percent[1980])
# prints
17%

Nøkkeltypen når du får tilgang til den, må samsvare med det som er lagret i Python -ordlisten. Følgende forårsaker en feil siden de lagrede nøklene er tall mens tilgangsnøkkelen er en streng.

x = '1980'
print(rain_percent[x])
# results in
1 x = '1980'
----> 2 print(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])
# prints
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, bruker du få() metode med standardverdi som det andre argumentet.

app for å overføre penger mellom venner
print(rain_percent.get(1985, '0%'))
# prints
0%

Kontrollerer eksistens

Hva om du vil kontrollere om det finnes en nøkkel uten å prøve å få tilgang til den (og muligens støte på en KeyError som ovenfor)? Du kan bruke i søkeord i skjemaet nøkkel i dct som returnerer en boolsk.

print(1980 in rain_percent)
print('1980' in rain_percent)
# prints
True
False

Omvend tilstanden (dvs. sørg for at nøkkelen ikke er tilstede i Python -ordboken) ved hjelp av skjemaet nøkkelen er ikke i dct . Dette tilsvarer standard python -negasjon ikke tast inn dct .

print(1980 not in rain_percent)
print(1985 not in rain_percent)
# prints
False
True

Endre elementer

Endre verdien ved å tilordne den nødvendige nøkkelen.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users['age'] = 29
print(users)
# prints
{'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

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

users['dob'] = '15-sep-1971'
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

Oppdater flere elementer i en ordbok i ett skudd med Oppdater() metode.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.update({'age': 29, 'dob': '15-sep-1971'})
print(users)
# prints
{'dob': '15-sep-1971', 'lastname': 'Smith', 'age': 29, 'firstname': 'John'}

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

# does not change current value
print(users.setdefault('firstname', 'Jane'))
# prints
John
# sets value
print(users.setdefault('city', 'NY'))
# prints
NY
# Final value
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John', 'city': 'NY'}

Sletter elementer

Slett tilordninger i ordlisten ved å bruke av operatør. Denne operatøren returnerer ikke noe.

Du vil støte på en KeyError hvis nøkkelen ikke finnes i ordlisten.

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
del users['age']
print(users)
# prints
{'lastname': 'Smith', 'firstname': 'John'}

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

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
print(users.pop('age'))
print(users)
# prints
27
{'lastname': 'Smith', 'firstname': '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 det andre argumentet som følger:

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.pop('foo', None)
print(users)
# prints
{'lastname': 'Smith', 'age': 27, 'firstname': 'John'}

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

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27, 'dob': '15-sep-1971'}
map(lambda x : users.pop(x, None),['age', 'foo', 'dob'])
print(users)

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

users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
users.clear()
print(users)
# prints
{}

Looping med Python -ordbøker

Python gir mange metoder for looping over oppføringene i en ordbok. Velg en som passer ditt behov.

Looping Over Keys

  • Den enkleste metoden for å behandle nøkler (og muligens verdier) i rekkefølge bruker en sløyfe med skjemaet: | _+_ |
  • Bruker metoden iterkeys () fungerer akkurat det samme som ovenfor. Velg hvilken form du vil bruke. | _+_ |
  • En tredje metode for å hente og behandle nøkler i en sløyfe innebærer bruk av den innebygde funksjonen iter () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users:
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John
  • Når du trenger indeksen til nøkkelen som behandles, bruker du oppregne () innebygd funksjon som vist. | _+_ |

Sløyfe over par med nøkkelverdi

  • Når du vil hente hvert nøkkelverdi-par med et enkelt anrop, bruker du iteritems () . users = {'firstname': 'John', 'lastname': 'Smith', 'age': 27}
    for k in users.iterkeys():
    print(k, '=>', users[k])
    # prints
    lastname => Smith
    age => 27
    firstname => John

Iterering over verdier

  • Metoden itervalues ​​() kan brukes til å iterere over alle verdiene i ordlisten. Selv om denne metoden ligner på en sløyfe som bruker verdier () , det er mer effektivt siden det ikke trekker ut alle verdiene samtidig. | _+_ |

Trekker ut matriser

Følgende metoder beskriver å trekke ut forskjellig Python -ordbokinformasjon i en matriseform. Den resulterende matrisen kan sløyfes over ved bruk av normale pytonkonstruksjoner. Vær imidlertid oppmerksom på at den returnerte matrisen kan være stor avhengig av størrelsen på ordboken. Så det kan være mer dyrt (minnemessig) å behandle disse matrisene enn å bruke iterator -metodene ovenfor.

Et tilfelle der det er akseptabelt å jobbe med disse matrisene, er når du må slette elementer fra ordlisten når du støter på uønskede elementer. Arbeid med en iterator mens du endrer ordboken kan forårsake RuntimeError.

  • Metoden varer () returnerer en rekke nøkkelverdier. Du kan gjenta over disse nøkkel-verdi-parene som vist: | _+_ |
  • Hent alle tastene i ordlisten ved hjelp av metoden nøkler () . | _+_ | Bruk den returnerte matrisen til å gå over tastene. | _+_ |
  • På samme måte kan du bruke metoden verdier () for å hente alle verdiene i ordlisten. | _+_ |

Hvordan bruker du Python -ordbøker?

Vi har prøvd å dekke de vanligste brukstilfellene for pythonordbøker i denne artikkelen. Sørg for å sjekke ut alle våre andre Python -artikler for enda flere Python -tips. Hvis du har andre brukstilfeller du mener bør være inkludert, vennligst gi oss beskjed i kommentarene nedenfor!

hvordan finne wifi -passord på telefonen

Bildekreditter: viper345/Shutterstock

Dele Dele kvitring E -post Slik får du tilgang til Googles innebygde boblenivå på Android

Hvis du noen gang har trengt å sørge for at noe er i vater, kan du nå få et boblenivå på telefonen din på få sekunder.

Les neste
Relaterte temaer
  • Programmering
  • Python
Om forfatteren Jay Sridhar(17 artikler publisert) Mer fra Jay Sridhar

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere