Unpacking av ordböcker med **
Svep för att visa menyn
Vid arbete med ordböcker i Python erbjuder **-operatorn ett kortfattat och kraftfullt sätt att packa upp deras innehåll. Uppackning med ** gör det möjligt att skicka ordboksobjekt som namngivna argument till funktioner eller att slå samman flera ordböcker. Denna teknik är särskilt användbar när du vill skriva flexibel och återanvändbar kod som kan hantera varierande uppsättningar av namngivna parametrar.
**-operatorn tar en ordbok och expanderar dess nyckel-värde-par till separata nyckelordsargument. Detta används ofta vid anrop av funktioner som accepterar nyckelordsargument, vilket gör att du kan skicka en ordbok direkt istället för att ange varje argument manuellt. En annan praktisk användning är att slå samman två eller flera ordböcker till en ny, där alla nyckel-värde-par kombineras i en enda ordbok.
12345def print_person(name, age): print(f"Name: {name}, Age: {age}") person_info = {"name": "Alice", "age": 28} print_person(**person_info)
Denna kod visar uppackning av ordböcker med hjälp av **-operatorn. När du placerar ** före en ordbok i ett funktionsanrop "packar" Python upp nyckel-värde-paren och skickar dem som individuella nyckelordsargument. I detta exempel är print_person(**person_info) funktionellt identiskt med att skriva print_person(name="Alice", age=28). För att detta ska fungera korrekt måste ordbokens nycklar exakt matcha parameternamnen som definierats i funktionssignaturen.
12345defaults = {"color": "blue", "size": "medium"} overrides = {"size": "large", "style": "bold"} merged = {**defaults, **overrides} print(merged)
Här visas sammanslagning av ordböcker. Genom att placera ** i en ny ordboksliteral expanderar Python nyckel-värde-paren från både defaults och overrides till ett enda objekt.
När nycklar överlappar – som "size" i detta exempel – får ordboken som kommer senare i sekvensen företräde. Här ersätter värdet "large" från overrides "medium" från defaults, vilket resulterar i en sammanslagen ordbok som kombinerar alla unika nycklar och prioriterar de senaste värdena.
1. Vad blir resultatet av att använda ** på en ordbok i ett funktionsanrop?
2. Vilken metod kombinerar två dictionarys med hjälp av unpacking i Python?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal