Ønsker du å lære å jobbe med Python-ordbøker? Denne opplæringen vil dekke Python-ordbokmetoder for å lese, endre og utføre andre vanlige operasjoner på Python-ordbøker.
Vi starter med å gå gjennom det grunnleggende om Python-ordbøker og deretter lage en eksempelordbok og endre den ved hjelp av Python-ordbokmetoder.
La oss komme i gang…
Innholdsfortegnelse
En oversikt over Python-ordbøker
Ordbøker er innebygde datastrukturer i Python. Den lar deg lagre elementer i nøkkelverdi-par – definere en assosiasjon eller tilordning mellom nøklene og verdiene.
Nøklene i en ordbok bør være unike (for at de skal være hashbare). Du kan bruke nøkkelen til å slå opp verdien eller bruke innebygde metoder (du vil lære dem snart).
Når du oppretter en Python-ordbok, kan du initialisere alle nøkkelverdi-parene eller initialisere en tom ordbok og deretter legge til nøkkelverdi-parene.
>>> dict1 = {'language':'Python','like':True} >>> type(dict1) <class 'dict'> # or we can do the following: >>> dict1 = {} >>> dict1['language']='Python' >>> dict1['like']=True
Python Dictionary Methods for Common Operations
Merk: For å følge kodeeksemplene må du ha Python 3.7 eller en nyere versjon installert.
Du kan kode med i en Python REPL. Eller følg med i tipsbilk.nets online Python-editor.
>>> person = {'name':'Alice', ... 'city':'Portland', ... 'interest':'Programming', ... 'profession':'Developer' ... }
Nå som vi har initialisert en Python-ordbok, la oss begynne å gå gjennom de forskjellige ordbokmetodene.
Få ordboknøklene med nøkler()
En av de vanlige operasjonene når du arbeider med en Python-ordbok er å få tilgang til alle nøklene, verdiene og nøkkelverdi-parene. For å få nøklene til en ordbok, kan du kalle opp keys()-metoden som vist:
>>> person.keys() dict_keys(['name', 'city', 'interest', 'profession'])
Få ordbokverdiene med verdier()
Metoden values() returnerer alle verdiene og er nyttig når du vil behandle disse verdiene videre.
La oss få tilgang til alle verdiene i personordboken:
>>> person.values() dict_values(['Alice', 'Portland', 'Programming', 'Developer'])
Få nøkkel-verdi-par med elementer()
Items()-metoden returnerer en liste over nøkkelverdi-tupler. Å kalle denne metoden på personordboken returnerer derfor en liste over nøkkelverdi-tupler:
>>> person.items() dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), ('profession', 'Developer')])
Få en grunn kopi med kopi()
Copy()-metoden returnerer en grunn kopi av en Python-ordbok.
>>> person_cpy = person.copy()
Her er person_cpy en grunn kopi av personordboken. La oss endre denne kopien ved å oppdatere «navn»-tasten til «Bob».
>>> person_cpy['name'] = 'Bob' >>> person_cpy
Nå hvis du undersøker innholdet i ordboken, kan du se at «navnet» har blitt oppdatert til «Bob».
{ 'name': 'Bob', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Den opprinnelige personordboken er imidlertid ikke endret.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer' }
Angi standardverdier med setdefault()
Når du arbeider med Python-ordbøker, er det vanlig å støte på KeyError-unntak hvis nøkkelen ikke finnes i ordboken. Her er et eksempel når vi prøver å få tilgang til «alder»-nøkkelen:
>>> person['age'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Du kan unngå slike feil ved å bruke de innebygde metodene setdefault() og get() metodene i stedet for å få tilgang til verdien som ovenfor.
Metoden setdefault(key) returnerer dict[‘key’] hvis nøkkelen er tilstede i diktet.
>>> person.setdefault('name') 'Alice'
Når nøkkelen ikke er til stede, legger den til nøkkelen i ordboken med standardverdien Ingen.
>>> person.setdefault('address') >>> person
Her er ikke «adresse»-nøkkelen til stede i personordboken. Men vi ser at den er lagt til med standardverdien Ingen.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': None }
Vi kan nå sette «adresse»-nøkkelen til en adresse:
>>> person['address'] = "10, xyz street"
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street' }
Du kan også angi verdien i metodekallet, som vist:
>>> person.setdefault('country','USA') 'USA' >>> person
Siden «country»-nøkkelen opprinnelig ikke finnes i personordboken, ser vi at den er lagt til med «USA» som verdi.
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Få en spesifikk verdi med get()
Get()-metoden returnerer verdien som tilsvarer nøkkelen. Den tar også valgfritt en annen standardverdi som returneres hvis nøkkelen ikke finnes i ordboken.
Når vi prøver å få tilgang til verdien av «navn»-nøkkelen, får vi «Alice» ettersom nøkkelen er til stede personlig:
>>> person.get('name') 'Alice'
Personordboken har ikke en «gpa»-nøkkel. Så når vi prøver å få verdien, får vi ingenting ved Python REPL. Men hvis du skriver ut verdien, får du ingen.
>>> person.get('gpa') >>> print(person.get('gpa')) None
Men hvis du oppgir den valgfrie standardverdien, får vi denne verdien i stedet for Ingen.
>>> person.get('gpa','not found') 'not found'
Get()-metoden legger imidlertid ikke «gpa»-nøkkelen til ordboken.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Forstå setdefault() vs. get()
Selv om både setdefault()- og get()-metodene kan brukes til å håndtere KeyError, la oss oppsummere forskjellene fra det vi har lært:
- dict.setdefault(key,val) legger til nøkkelen med val som standardverdi. Hvis verdi ikke er oppgitt, legges nøkkelen til med standardverdien Ingen.
- dict.get(key,val) returnerer verdien som tilsvarer nøkkelen fra Python-ordboken. Hvis nøkkelen ikke er til stede, returnerer den val (hvis gitt) eller Ingen – men legger ikke til nøkkelen i ordboken.
Du kan også bruke defaultdict i Python for å håndtere KeyErrors bedre.
Oppdater ordbokinnhold med update()
Du kan oppdatere en eksisterende Python-ordbok ved å bruke nøkkel-verdi-par fra en annen ordbok. Du kan også oppdatere med innholdet av hvilken som helst Python iterable ved å bruke update()-metoden.
La oss definere en mer_detaljer-ordbok. Vi oppdaterer deretter personordboken med innhold fra more_details-ordboken:
>>> more_details = {'hobby':'singing', 'likes':'sweets'} >>> person.update(more_details)
Fra utdataene nedenfor ser vi at «hobby»- og «liker»-tastene er lagt til i personordboken.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing', 'likes': 'sweets' }
Fjern elementet sist lagt til med popitem()
Ordbokmetoden popitem() kan brukes til å fjerne det sist tilføyde nøkkelverdi-paret.
>>> person.popitem() ('likes', 'sweets')
Som sett, kalles popitem()-metoden i personordboken tilbake («likes»,’sweets») nøkkelverdi-paret – det sist lagt til elementet i ordboken.
Det fjerner også nøkkelverdi-paret. Du kan bekrefte dette ved å undersøke innholdet i ordboken:
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA', 'hobby': 'singing' }
Fjern et ordbokelement med pop()
Vi vet at popitem()-ordbokmetoden fjerner og returnerer det siste nøkkelverdi-paret i en Python-ordbok. Noen ganger kan det imidlertid hende at vi må fjerne andre elementer – bortsett fra det sist tilføyde nøkkelverdi-paret også.
For å gjøre dette kan vi bruke Python-ordbokmetoden pop(): bruk av .pop(key) på ordboken returnerer verdien som tilsvarer nøkkelen og fjerner også nøkkelverdi-paret fra ordboken.
Her er et eksempel:
>>> person.pop('hobby') 'singing'
Da vi åpnet elementet som tilsvarer nøkkelen «hobby», ser vi at det ikke lenger finnes i ordboken.
>>> person
{ 'name': 'Alice', 'city': 'Portland', 'interest': 'Programming', 'profession': 'Developer', 'address': '10, xyz street', 'country': 'USA' }
Hvis vi sender inn en nøkkel som ikke eksisterer, får vi KeyError-unntak, som vist:
>>> person.pop('age') Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age'
Her støter vi på et KeyError-unntak ettersom «alder»-nøkkelen ikke er til stede i personordboken.
I motsetning til list pop()-metoden som fjerner det siste elementet som standard, krever ordbok pop()-metoden en nøkkel. Hvis du ikke spesifiserer en nøkkel i metoden, får vi feil.
>>> person.pop() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: pop expected at least 1 argument, got 0
Slett alle ordbokelementer med clear()
Ordboken pop() og popitem()-metodene fjerner ett nøkkelverdi-par om gangen. Hvis du vil slette alle elementene i en ordbok, kan du bruke clear()-metoden.
>>> person.clear() >>> person {}
Som sett fjerner du alle nøkkelverdi-parene ved å kalle opp clear()-metoden i personordboken, og personordboken er nå tom.
Sammendrag av Python Dictionary Methods
Her er en rask gjennomgang av Python-ordbokmetodene vi har lært.
MethodSyntaxDescriptionkeys()dict1.keys()Returnerer nøklene til dict1values()dict1.values()Returnerer verdiene til dict1items()dict1.items()Returnerer en liste over alle nøkkelverdi-par i dict1copy()dict1.copy() Returnerer en grunn kopi av dict1setdefault()dict1.setdefault(key, default_value)– Legger til nøkkel med den valgfrie default_value som nøkkelen til dict1 (når ikke spesifisert, er standardverdien Ingen)
– Returnerer dict1[key] hvis nøkkelen allerede er tilstedeget()dict1.get(key,default_value)– Returnerer dict1[key] hvis nøkkel er tilstede i dict1; Ellers returnerer standard_verdien
– Hvis nøkkel ikke er til stede i dict1 og default_value ikke er spesifisert, returnerer Noneupdate()dict1.update(iterable1)Oppdaterer dict1 med nøkkelverdi-par fra iterable1popitem()dict1.popitem()Fjerner og returnerer det siste nøkkelverdi-paret fra dict1pop()dict1.pop(key)– Fjerner og returnerer verdien som tilsvarer nøkkelen: dict1[key]
– Oppretter en KeyError hvis nøkkelen ikke er til stede i dict1clear()dict1.clear()Sletter alle elementer fra dict1
Konklusjon
Du har lært hvordan du bruker vanlige metoder for å utføre lese-, oppdaterings- og sletteoperasjoner på Python-ordbøker. I tillegg har du også lært hvordan get()- og setdefault()-metodene kan brukes til å håndtere KeyError-unntak ved å returnere en standardverdi og legge til en oppføring med en standardverdi til Python-ordboken. Du kan også sortere en Python-ordbok etter nøkkel eller verdi.
Deretter kan du sjekke ut listen over nyttige Python-listemetoder. Lykke til med koding!