Unpacking Dictionaries with **
Pyyhkäise näyttääksesi valikon
Työskenneltäessä sanakirjojen kanssa Pythonissa **-operaattori tarjoaa tiiviin ja tehokkaan tavan purkaa niiden sisältö. Sanakirjan purkaminen **:lla mahdollistaa sanakirjan avainten ja arvojen välittämisen nimettyinä argumentteina funktioille tai useiden sanakirjojen yhdistämisen yhdeksi sanakirjaksi. Tämä tekniikka on erityisen hyödyllinen, kun halutaan kirjoittaa joustavaa ja uudelleenkäytettävää koodia, joka pystyy käsittelemään vaihtelevia nimettyjen parametrien joukkoja.
**-operaattori ottaa sanakirjan ja laajentaa sen avain-arvo-parit erillisiksi avainsana-argumenteiksi. Tätä käytetään yleisesti funktioita kutsuttaessa, kun ne hyväksyvät avainsana-argumentteja, jolloin sanakirja voidaan välittää suoraan ilman, että jokainen argumentti määritellään erikseen. Toinen käytännöllinen käyttötapa on yhdistää kaksi tai useampia sanakirjoja uudeksi sanakirjaksi, jossa kaikki avain-arvo-parit yhdistetään yhteen sanakirjaan.
12345def print_person(name, age): print(f"Name: {name}, Age: {age}") person_info = {"name": "Alice", "age": 28} print_person(**person_info)
Tämä koodi havainnollistaa sanakirjan purkamista **-operaattorilla. Kun sijoitat ** sanakirjan eteen funktiokutsussa, Python "avaa" avain-arvo-parit ja välittää ne yksittäisinä avainsana-argumentteina. Tässä esimerkissä print_person(**person_info) on toiminnallisesti sama kuin print_person(name="Alice", age=28). Jotta tämä toimisi oikein, sanakirjan avainten täytyy vastata täsmälleen funktion määrittelyn parametrien nimiä.
12345defaults = {"color": "blue", "size": "medium"} overrides = {"size": "large", "style": "bold"} merged = {**defaults, **overrides} print(merged)
Tässä nähdään sanakirjojen yhdistäminen. Kun asetetaan ** uuden sanakirjan literaalin sisään, Python laajentaa sekä defaults- että overrides-sanakirjojen avain-arvoparit yhdeksi olioksi.
Kun avaimet menevät päällekkäin – kuten "size" tässä esimerkissä – myöhemmin määritelty sanakirja menee etusijalle. Tässä overrides-sanakirjan arvo "large" korvaa defaults-sanakirjan arvon "medium", jolloin yhdistetty sanakirja sisältää kaikki uniikit avaimet ja priorisoi uusimmat arvot.
1. Mikä on tulos, kun käytetään ** sanakirjan kanssa funktiokutsussa?
2. Millä menetelmällä kaksi sanakirjaa yhdistetään purkamalla Pythonissa?
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme