En jevn forfriskning på Pythons ordbøker

I en tidligere opplæring snakket jeg om en svært allsidig og fleksibel objekttype i Python, nemlig lister. I denne artikkelen fortsetter jeg oppdateringene med en annen fleksibel Python-objekttype som heter ordbøker (også kalt associative arrays eller hashes). I likhet med listen er ordboken et viktig konsept å forstå for å kunne bevege seg videre i Python-reisen.

Hva er en ordliste uansett?

Hvis du gikk gjennom lister artikkelen, vil det være lett å forstå begrepet ordbøker. De er ganske likt Lister, men med to hovedforskjeller: 

  1. De er uordnede sett (i motsetning til Lister som er bestilt).
  2. Nøkler brukes til å få tilgang til elementer og ikke en posisjon (dvs. indeks).

Hver nøkkel i ordboken har en verdi, som kan være av en hvilken som helst Python objekttype. Det vil si, ordbøker kan betraktes som nøkkelverdi par. Men vær forsiktig med det nøkler Kan ikke være av typen List eller Dictionary.

La oss lage en engelsk-fransk ordbok

Som vi så i forrige avsnitt, er en ordbok ganske enkelt et uordnet sett med nøkkelverdier. La oss bruke dette konseptet til å lage vårt første eksempel, en engelsk-fransk ordbok. Denne ordboken kan opprettes som følger:

english_french = 'paper': 'papir', 'penn': 'stylo', 'bil': 'voiture', 'table': 'bord', 'dør': 'porte'

Ordboken english_french inneholder fem engelske ord angitt som nøkler med sine franske betydninger satt som verdier

La oss si at vi ønsket å vite hvordan å si penn på fransk. Vi gjør bare følgende:

english_french [ 'penn']

hvor du vil få stylo som verdien returneres.

Gjør ting mer interessant

La oss si at vi hadde en french_spanish Ordbok med de samme ordene vi hadde i english_french Ordbok, som følger:

french_spanish = 'papir': 'papel', 'stylo': 'pluma', 'voiture': 'coche', 'bord': 'mesa', 'porte': 'puerta'

Vel, du har blitt spurt hvordan du skal si dør på spansk, og du har ikke en engelsk-spansk ordbok på hånden! Men vær ikke bekymret, det er en løsning. Kontakt din english_french Ordbok for ordet, bruk deretter resultatet til å konsultere french_spanish Ordbok. Fikk poenget? La oss se hvordan vi kan gjøre det i Python:

french_spanish [english_french [ 'dør']]

Resultatet skal være puerta. Er det ikke så bra? Du har akkurat ordet for dør på spansk selv om du ikke har en engelsk-spansk ordbok.

Flere operasjoner på ordbøker

I det forrige eksempelet så vi hvordan vi kan lage en ordbok og tilgangsposter i ordboken. La oss se noen flere operasjoner vi kan gjøre på Ordbøker. Jeg skal bruke english_french Ordbok i eksemplene nedenfor.

Hvor mange innlegg er der i ordboken?

Med andre ord, er denne operasjonen ment å returnere antall nøkkelverdier i ordboken. Dette kan utføres ved hjelp av len () operatør, som følger:

len (english_french)

Du bør få 5 returnert.

Slette en nøkkel

Slettingen av et element i en ordbok utføres gjennom nøkler. For eksempel, la oss si at vi ønsket å slette ordet (nøkkel) dør fra ordboken. Dette kan enkelt gjøres som følger:

del english_french ['door']

Dette vil fjerne nøkkel dør sammen med sin verdi porte.

Finnes nøkkelen i ordboken?

I forrige underavsnitt fjernet vi nøkkel dør fra ordboken. Hvis vi vil sjekke om dør eksisterer fortsatt i ordboken eller ikke, skriver vi:

'dør' på engelsk_french

som skal returnere Falsk.

Således, hva tror du at følgende erklæring kommer tilbake? Gå videre og prøv det (legg merke til ikke).

'dør' ikke på engelsk_french

Hva skjer hvis vi prøver å få tilgang til en nøkkel som ikke finnes i en ordbok? Si english_french [ 'dør']. I dette tilfellet vil du få en feil som ligner på følgende:

Traceback (siste samtalen sist):

  Fil "dictionary.py", linje 7, i

    skriv ut english_french ['door']

KeyError: 'dør'

Opprette en kopi av din ordbok

Du må kanskje ha en kopiere av din english_french Ordliste og tilordne det til en annen ordbok. Dette kan enkelt gjøres ved hjelp av kopiere() funksjon, som følger:

new_english_french = english_french.copy ()

Nestede ordbøker

Som nevnt ovenfor kan verdier i ordbøker av noe slag, inkludert ordbøker. Dette kalles nesting. Et eksempel på dette kan være som følger:

student = 'ID': 'navn': 'Abder-Rahman', 'nummer': '1234'

Dermed, hvis du skriver inn Student ID'], du bør få:

'navn': 'Abder-Rahman', 'nummer': '1234' 

Iterating over en ordbok

La oss komme tilbake til english_french Ordbok. Det er mange måter du kan iterere over ordlisteens elementer:

for ord på engelsk_french:

    skriveord

Resultatet av denne erklæringen er som følger:

bil

penn

papir

dør

bord 

Legg merke til at nøkler i resultatet er ikke gitt i samme rekkefølge som i english_french Ordbok. Du kan nå se hvorfor jeg sa at ordbøker betraktes som uordnede sett.

En annen måte å iterere gjennom nøkler er som følgende:

for ord i engelsk_french.iterkeys ():

    skriveord

Legg merke til at vi brukte iterkeys () funksjon. En lignende funksjon som kan brukes til å iterere gjennom verdiene, nemlig itervalues ​​(), er som følgende:

for mening i engelsk_french.itervalues ​​():

    skrive betydning

Resultatet i dette tilfellet skal se ut som følgende:

voiture

stylo

papier

porte

bord

Alternative måter å lage ordbøker på

Det finnes alternative måter å lage en ordbok i Python ved hjelp av dict konstruktør. Noen eksempler på å lage samme ordbok ID ved hjelp av dict er som følger:

ID = dikt (navn = 'Abder-Rahman', tall = 1234)

ID = dikt ([('navn', 'Abder-Rahman'), ('nummer', 1234)])

ID = dikt (zip (['navn', 'tall'], ['Abder-Rahman', 1234])) # nøkler og verdier som lister

Det er mer som du kan gjøre med ordbøker. Sjekk Pythons dokumentasjon for mer informasjon.