Opplæring i Python-ordbokforståelse

Python-programmeringsspråket tilbyr et unikt sett med verktøy som gjør koding ikke bare morsomt, men også akselerere fremgangen din som programmerer. På grunn av dens brukervennlighet har Python blitt det foretrukne språket for en rekke bransjer, fra nettutvikling og datavitenskap til finans og mer.

Opplæring i Python-ordbokforståelse

Python- ordbokforståelse er et viktig verktøy som lar deg generere ordbøker dynamisk ved å iterere over eksisterende iterable datastrukturer eller ordbøker for å lage nye. Du kan tenke på ordbokforståelse som lik listeforståelse, men med et litt annet bruksområde.

Etter hvert som du blir kjent med forståelser, vil du oppdage at de kan forbedre koden betydelig ved å fremme klarhet og eliminere behovet for lange, repeterende looper.

Hvis du er ny på , har du kanskje ikke støtt på forståelse eller brukt den i koden din. Før vi dykker inn i syntaksen, la oss ta hovedspørsmålet: Hva er Python-ordbokforståelse?

Innholdsfortegnelse

Hva er Python Dictionary Comprehension?

Python Dictionary Comprehension er en kortfattet måte å lage ordbøker på ved hjelp av enkle uttrykk. Den lar deg generere nye ordbøker uten å måtte bruke for-loops.e

La oss ta en titt på et eksempel på forståelse. Anta at du har to lister, en inneholder nøkler og den andre inneholder verdier:

keys = ['a', 'b', 'c']
values = [1, 2, 3]

Ved å bruke ordbokforståelse kan du opprette en ny ordbok ved å iterere over de to listene og kombinere de tilsvarende nøkkelverdi-parene:

my_dict = {k: v for k, v in zip(keys, values)}
print(my_dict)

Utgangen vil være:

{'a': 1, 'b': 2, 'c': 3}

Opplæring i Python-ordbokforståelse

Eksemplet ovenfor skal gi en idé om hva forståelser er i . For å hjelpe deg med å styrke konseptet ytterligere, la oss forstå syntaksen for ordbokforståelse i Python.

Forstå syntaksen for ordbokforståelse

Syntaksen for ordbokforståelse er enkel, men kraftig. De tilbyr en kortfattet . De følger også en lignende syntaks for listeforståelse, men bruker krøllete klammeparenteser {} og et nøkkelverdi-par atskilt med et kolon.

Den grunnleggende strukturen er som følger:

{key: value for (key, value) in iterable}

I denne syntaksen representerer nøkkelen og verdien uttrykkene som brukes til å generere nøklene og verdiene til den resulterende ordboken. Iterablen gir datakilden som brukes til å lage nøkkelverdi-parene.

Denne syntaksen ble introdusert i Python 3 og tilbakeført så langt som Python 2.7, noe som sikrer bred kompatibilitet på tvers av Python-versjoner.

For eksempel, for å lage en ordbok som tilordner tall fra 0 til 4 til kvadratene deres ved hjelp av ordbokforståelse, kan du bruke følgende Python-kode:

square_dict = {x: x**2 for x in range(5)}

Dette vil resultere i følgende ordbok:

{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Opplæring i Python-ordbokforståelse

Hva om du ønsker å iterere over to variabler samtidig? Du kan oppnå dette ved å bruke ordbokforståelse med zip()-funksjonen for å lage en ordbok fra to iterables, en som representerer nøklene og den andre representerer verdiene. Her er et eksempel:

keys = ['a', 'b', 'c', 'd', 'e']
values = [1, 2, 3, 4, 5]
my_dict = {k: v for k, v in zip(keys, values)}

Den resulterende ordboken vil være:

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

Opplæring i Python-ordbokforståelse

Ordbokforståelse lar deg også legge til en valgfri if-setning på slutten av forståelsen for å bruke et betinget filter på de inkluderte elementene.

Du kan for eksempel lage en ordbok med bare partall og deres kvadrater ved å bruke ordbokforståelse:

even_square_dict = {x: x**2 for x in range(10) if x % 2 == 0}

Dette resulterer i:

{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}

Opplæring i Python-ordbokforståelse

Nå som du har litt kjennskap til syntaksen for forståelse, la oss ta en titt på noen eksempler på forståelse.

Eksempler på ordbokforståelse

Ordbokforståelse finner en rekke brukstilfeller på grunn av sin kraftige og elegante syntaks. De kan spare deg for tid og gjøre koden din mer lesbar.

Tilordne tall til rutene deres

Tenk på et enkelt eksempel der du vil lage en ordbok som tilordner tall til kvadratene deres ved å bruke Python-ordbokforståelsen:

squares = {x: x**2 for x in range(1, 6)}
print(squares)

Dette vil gi ut:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

Koden ovenfor gjør den samme jobben som å kjøre en løkke seks ganger og kvadrere hvert tall. Koden nedenfor demonstrerer å kjøre en sløyfe for å ta kvadratene av tall:

squares = {}
for x in range(1, 6):
    squares[x] = x ** 2

print(squares)

På dette tidspunktet lurer du kanskje på hvorfor du skal bruke forståelse når du kan bruke looper. I programmering er en tommelfingerregel å skrive kompakt og effektiv kode.

Du kan også bruke vilkår for din forståelse. Det kan for eksempel være lurt å lage en ordbok som bare inneholder partall og deres kvadrater:

even_squares = {x: x**2 for x in range(1, 6) if x % 2 == 0}
print(even_squares)

Å kjøre denne koden vil produsere en ny ordbok som følgende:

{2: 4, 4: 16}

Omvendt nøkler og verdier

Du kan også snu ordbokelementer enkelt med ordbokforståelse i Python.

Følgende kode viser hvordan du reverserer nøkler og verdier til en eksisterende ordbok ved å bruke ordbokforståelse:

original_dict = {"one": 1, "two": 2, "three": 3, "four": 4}
reversed_dict = {v: k for k, v in original_dict.items()}
print(reversed_dict)

Ovennevnte ordbokforståelse (eller diktforståelse) vil skrive ut følgende:

{1: 'one', 2: 'two', 3: 'three', 4: 'four'}

Opplæring i Python-ordbokforståelse

For å få en god forståelse av hva ordbøker er og hvordan du kan bruke dem i forskjellige tilfeller, se videoen nedenfor:

Eksemplene som er gitt tjener som et solid grunnlag for å bruke ordbokforståelse i Python-prosjektene dine.

Ordbokforståelsen kan også optimaliseres ytterligere, slik at en enkelt linje med kode kan utføre komplekse oppgaver som kan ta mer tid og minne med loops.

3 store fordeler med ordbokforståelse

Du har opplevd elegansen med ordbokforståelse gjennom eksemplene som er gitt. Bortsett fra lesbarhet, gir forståelser flere fordeler, inkludert effektivitet, når du arbeider med Pythons effektive nøkkel/verdi-hash-tabellstruktur, kalt dict- forståelse.

1. Lage tydelig og enkel kode

Forståelser lar deg lage nye ordbøker enkelt og på en lesbar måte. De får koden din til å se og føles mer pytonisk sammenlignet med tradisjonelle looper.

2. Bedre ytelse med stil

Forståelser er ikke bare elegante, men også effektive. De fungerer ofte raskere enn for loops siden de bruker et enkelt uttrykk. Python optimerer denne typen kode, og eliminerer behovet for gjentatte ganger å kalle ordbokkonstruktøren eller bruke update()-metoden.

3. Enkel filtrering og datatransformasjon

En annen fordel med ordbokforståelse er dens enkelhet i filtrering og transformering av data. Du kan for eksempel lage en ny ordbok fra en eksisterende ved å bruke en betingelse eller endre nøklene eller verdiene.

Det er avgjørende å forstå når man skal bruke ordbokforståelse i Python, da de raskt kan bli komplekse og vanskeligere å lese og skrive. La oss nå utforske noen brukstilfeller for ordbokforståelse i Python.

3 eksempler på når du skal bruke ordbokforståelse

Forståelser er nyttige i følgende 3 scenarier:

1. Når du lager en ordbok fra to lister

{key:value for key, value in zip(list1, list2)}

2. Når du filtrerer en ordbok basert på verdi

{k: v for k, v in original_dict.items() if v > threshold}

3. Når du transformerer nøkler eller verdier

{k.upper(): v * 2 for k, v in original_dict.items()}

Det er viktig å huske at selv om forståelser kan gjøre koden din mer elegant og effektiv, kan de også bli vanskelige å lese hvis de er for komplekse.

La oss se på noen av de vanligste fallgruvene når du bruker ordbokforståelse.

Fallgruvene ved ordbokforståelse

Ordbokforståelse gir eleganse og effektivitet, men kommer også med utfordringer. Vi vil diskutere vanlige fallgruver knyttet til lesbarhet, kompleksitet og ytelse med store datasett.

Balanserer kompleksitet og lesbarhet

Komplekse ordbokforståelser kan være vanskelig å lese. Prioriter kodelesbarhet, spesielt når du jobber med andre. I noen tilfeller kan tradisjonelle løkker være enklere og mer vedlikeholdbare.

Ytelse med store datasett

For store datasett kan det hende at ordbokforståelsen ikke alltid er optimal. I følge Stack Overflow kan en innebygd dict()-konstruktør overgå ordbokforståelsen med mange nøkkelverdi-par på grunn av looping i C.

Sammenligning med andre metoder

I denne delen vil vi sammenligne ordbokforståelser med to alternative metoder for å lage ordbøker i Python: for løkker og lambda-funksjoner.

For Loop

Å bruke en for-løkke for å lage en ordbok innebærer å initialisere en tom ordbok og deretter iterere gjennom det ønskede gyldige nøkkelverdiparet, og legge til hvert par i ordboken. Dette er en mer detaljert metode sammenlignet med ordbokforståelse.

Følgende er et eksempel på hvordan du lager en ordbok med for loops:

dictionary = {}
for key, value in zip(keys, values):
    dictionary[key] = value

Omvendt lar en ordbokforståelse deg oppnå det samme resultatet på en enkelt linje:

dictionary = {key: value for key, value in zip(keys, values)}

Opplæring i Python-ordbokforståelse

Som du kan se, gir forståelser en kortfattet og mer lesbar måte å lage ordbøker på i Python.

Lambda funksjoner

Vi kan også bruke Lambda-funksjoner til å lage ordbøker. Lambda-funksjoner er en måte å lage små, anonyme funksjoner i Python. De kan brukes sammen med map()-funksjonen for å lage en ordbok.

La oss se på et eksempel på Lambda-funksjoner for å lage ordbøker:

keys = ['a', 'b', 'c']
values = [1, 2, 3]

key_value_pairs = map(lambda key, value: (key, value), keys, values)
dictionary = dict(key_value_pairs)

Til sammenligning, her er hvordan den samme ordboken kan lages ved å bruke forståelse:

dictionary = {key: value for key, value in zip(keys, values)}

Opplæring i Python-ordbokforståelse

Igjen gir ordbokforståelse et kortfattet og mer lesbart alternativ til å lage ordbøker ved hjelp av lambda-funksjoner og map()-funksjonen.

Beste praksis for ordbokforståelse

Når du bruker forståelser i Python, er det viktig å følge beste praksis for å forbedre lesbarhet, vedlikehold og effektivitet. Her er noen gode fremgangsmåter du bør vurdere:

1. Hold ordbokforståelsen enkel

Ordbokforståelse er kraftig, men den bør være klar og kortfattet. Hvis forståelsen din blir for kompleks eller spenner over flere linjer, bør du vurdere å bruke en tradisjonell for loop i stedet. Dette hjelper kodeforståelsen, spesielt for andre eller når du ser på arbeidet ditt på nytt senere.

2. Utnytt innebygde funksjoner

Python tilbyr innebygde funksjoner som zip() og enumerate() som bidrar til å skape forståelser. Bruk disse funksjonene til å strømlinjeforme koden og gjøre den mer lesbar.

For eksempel, bruk av zip() for å kombinere to lister og lage en ordbok resulterer i kortfattet og ren kode som dette:

{key: value for key, value in zip(keys, values)}

3. Bruk betingede utsagn med omhu

Inkorporer betingede utsagn i dine forståelser når det er nødvendig, men ikke overbruk dem. De kan hjelpe med å filtrere eller endre den resulterende ordboken, men for mange nestede forhold kan gjøre koden vanskelig å lese. Et enkelt eksempel som involverer en betinget uttalelse er:

{x: x**2 for x in range(10) if x % 2 == 0}

4. Vær oppmerksom på nestet ordbokforståelse

Nestet ordbokforståelse kan generere ordbøker med nestede strukturer. I likhet med betingede utsagn kan imidlertid et overskudd av nestet ordbok gjøre koden vanskeligere å tyde. Unngå å gå utover to nivåer av hekking i din nestede ordbokforståelse.

Noen ganger må du kanskje bruke nestet ordbokforståelse i løkker for å oppnå ønsket effektivitet.

Vårt siste ord

Nå har du mestret ordbokforståelse i Python. Denne elegante, effektive teknikken hjelper til med å lage ordbøker ved å iterere over iterable eller bruke betingelser. Forståelser effektiviserer koden din, øker lesbarheten og vedlikeholdsvennligheten.

Det er enkelt å lage nye ordbøker med forståelse, noe som sparer tid og krefter sammenlignet med tradisjonelle for-løkker. De er nyttige i virkelige applikasjoner som databehandling, kartlegging og transformasjon.

Hvis du ønsker å videreutvikle Python-kunnskapen din og bli en ekte proff, for vårt Python-kurs og se hvordan vi skaper verdens beste Python-brukere.


Pipe In R: Koblingsfunksjoner med Dplyr

Pipe In R: Koblingsfunksjoner med Dplyr

I denne opplæringen lærer du hvordan du kobler funksjoner sammen ved å bruke dplyr-røroperatøren i programmeringsspråket R.

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX Deep Dive: A LuckyTemplates DAX-funksjon

RANKX fra LuckyTemplates lar deg returnere rangeringen til et spesifikt tall i hver tabellrad som utgjør en del av en liste med tall.

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Trekker ut LuckyTemplates-temaer og bilder fra PBIX

Lær hvordan du demonterer en PBIX-fil for å trekke ut LuckyTemplates-temaer og bilder fra bakgrunnen og bruke den til å lage rapporten din!

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

Excel Formulas Cheat Sheet: Mellomveiledning

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

LuckyTemplates-kalendertabell: Hva er det og hvordan du bruker det

Python i LuckyTemplates: Hvordan installere og sette opp

Python i LuckyTemplates: Hvordan installere og sette opp

Lær hvordan du installerer programmeringsspråket Python i LuckyTemplates og hvordan du bruker verktøyene til å skrive koder og vise visuelle elementer.

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Beregning av dynamiske fortjenestemarginer – enkel analyse av LuckyTemplates med DAX

Lær hvordan du beregner dynamiske fortjenestemarginer ved siden av LuckyTemplates og hvordan du kan få mer innsikt ved å grave dypere inn i resultatene.

Sortering av datotabellkolonner i LuckyTemplates

Sortering av datotabellkolonner i LuckyTemplates

Lær hvordan du sorterer feltene fra kolonner med utvidet datotabell på riktig måte. Dette er en god strategi å gjøre for vanskelige felt.

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

Finn dine beste produkter for hver region i LuckyTemplates ved å bruke DAX

I denne artikkelen går jeg gjennom hvordan du kan finne de beste produktene dine per region ved å bruke DAX-beregninger i LuckyTemplates, inkludert TOPN- og CALCUATE-funksjonene.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Lær hvordan du bruker en søppeldimensjon for flagg med lav kardinalitet som du ønsker å inkludere i datamodellen din på en effektiv måte.