10 nyttige Python-ordbokmetoder

Ø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…

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.

  23 beste Nintendo Switch-kontroller og dokkingstasjon for alle

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.

  Migrer databaser sømløst med BackupBuddy

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å.

  Fiks ROG Gaming Center som ikke fungerer

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!