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.
Hvis du gikk gjennom lister artikkelen, vil det være lett å forstå begrepet ordbøker. De er ganske likt Lister, men med to hovedforskjeller:
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.
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.
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.
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.
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.
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
.
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'
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 ()
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'
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
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.