Opppakking av ordbøker med **
Sveip for å vise menyen
Når du arbeider med ordbøker i Python, gir **-operatoren en kortfattet og kraftig måte å pakke ut innholdet på. Oppakking med ** gjør det mulig å sende ordbokelementer som navngitte argumenter til funksjoner eller å slå sammen flere ordbøker. Denne teknikken er spesielt nyttig når du ønsker å skrive fleksibel og gjenbrukbar kode som kan håndtere varierende sett med navngitte parametere.
**-operatoren tar en ordbok og utvider dens nøkkel-verdi-par til separate nøkkelordargumenter. Dette brukes ofte når man kaller funksjoner som aksepterer nøkkelordargumenter, slik at du kan sende en ordbok direkte i stedet for å spesifisere hvert argument manuelt. En annen praktisk bruk er å slå sammen to eller flere ordbøker til en ny, der alle nøkkel-verdi-par kombineres i én ordbok.
12345def print_person(name, age): print(f"Name: {name}, Age: {age}") person_info = {"name": "Alice", "age": 28} print_person(**person_info)
Denne koden demonstrerer oppakking av ordbøker ved bruk av **-operatoren. Når du plasserer ** foran en ordbok i et funksjonskall, "pakker" Python ut nøkkel-verdi-parene og sender dem som individuelle nøkkelordargumenter. I dette eksemplet er print_person(**person_info) funksjonelt identisk med å skrive print_person(name="Alice", age=28). For at dette skal fungere riktig, må ordbokens nøkler nøyaktig samsvare med parameternavnene som er definert i funksjonssignaturen.
12345defaults = {"color": "blue", "size": "medium"} overrides = {"size": "large", "style": "bold"} merged = {**defaults, **overrides} print(merged)
Her ser du sammenslåing av ordbøker. Ved å plassere ** inne i et nytt ordbok-litteral, utvider Python nøkkel-verdi-parene fra både defaults og overrides til ett enkelt objekt.
Når nøkler overlapper – som "size" i dette eksempelet – vil ordboken som kommer sist i rekkefølgen ha forrang. Her overskriver verdien "large" fra overrides "medium" fra defaults, noe som resulterer i en sammenslått ordbok som kombinerer alle unike nøkler og prioriterer de nyeste verdiene.
1. Hva er resultatet av å bruke ** på en ordbok i et funksjonskall?
2. Hvilken metode kombinerer to ordbøker ved bruk av oppakking i Python?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår