I denne opplæringen lærer du alt om Python-ordbøker; hvordan de blir opprettet, få tilgang til, legge til, fjerne elementer fra dem og forskjellige innebygde metoder.
Video: Python Dictionaries to Store key / value Pairs
Python-ordbok er en uordnet samling av gjenstander. Hvert element i en ordbok har et key/value
par.
Ordbøker er optimalisert for å hente verdier når nøkkelen er kjent.
Opprette Python Dictionary
Å lage en ordbok er så enkelt som å plassere elementer i krøllete parenteser ()
atskilt med komma.
Et element har a key
og et tilsvarende value
som uttrykkes som et par ( nøkkel: verdi ).
Selv om verdiene kan være av hvilken som helst datatype og kan gjentas, må nøklene være av uforanderlig type (streng, tall eller tupel med uforanderlige elementer) og må være unike.
# empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))
Som du kan se ovenfra, kan vi også lage en ordbok ved hjelp av den innebygde dict()
funksjonen.
Få tilgang til elementer fra ordboken
Mens indeksering brukes med andre datatyper for å få tilgang til verdier, bruker en ordbok keys
. Tastene kan brukes enten i firkantede parenteser ()
eller med get()
metoden.
Hvis vi bruker firkantede parenteser ()
, KeyError
heves i tilfelle en nøkkel ikke blir funnet i ordboken. På den annen side get()
returnerer metoden None
hvis nøkkelen ikke blir funnet.
# get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))
Produksjon
Jack 26 Ingen sporbarhet (siste samtale sist): Fil "", linje 15, på trykk (my_dict ('adresse')) KeyError: 'adresse'
Endre og legge til ordbokselementer
Ordbøker er foranderlige. Vi kan legge til nye varer eller endre verdien på eksisterende varer ved hjelp av en oppdragsoperatør.
Hvis nøkkelen allerede er til stede, blir den eksisterende verdien oppdatert. Hvis nøkkelen ikke er tilstede, legges et nytt ( nøkkel: verdi ) par til ordboken.
# Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)
Produksjon
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Fjerne elementer fra ordboken
Vi kan fjerne et bestemt element i en ordbok ved å bruke pop()
metoden. Denne metoden fjerner et element med det oppgitte key
og returnerer value
.
Den popitem()
metoden kan brukes til å fjerne og returnere et vilkårlig (key, value)
element par fra ordboken. Alle elementene kan fjernes samtidig, ved hjelp av clear()
metoden.
Vi kan også bruke del
nøkkelordet for å fjerne enkeltelementer eller hele ordboken.
# Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)
Produksjon
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Spor tilbake (siste samtale sist): Fil "", linje 30, i utskrift (firkanter) NameError: name 'squares' er ikke definert
Python Dictionary Methods
Metoder som er tilgjengelige med en ordbok er tabellert nedenfor. Noen av dem har allerede blitt brukt i eksemplene ovenfor.
Metode | Beskrivelse |
---|---|
klar() | Fjerner alle elementene fra ordboken. |
kopiere() | Returnerer en grunne kopi av ordboken. |
fromkeys (seq (, v)) | Returnerer en ny ordbok med nøkler fra seq og verdi lik v (standard None ). |
få (nøkkel (, d)) | Returnerer verdien av nøkkelen. Hvis nøkkelen ikke finnes, returnerer d (er som standard None ). |
gjenstander () | Returner et nytt objekt av ordbokens elementer i (nøkkel, verdi) format. |
nøkler () | Returnerer et nytt objekt av ordbokens nøkler. |
pop (tast (, d)) | Fjerner elementet med nøkkelen og returnerer verdien eller d hvis nøkkelen ikke blir funnet. Hvis d ikke er gitt, og nøkkelen ikke blir funnet, hever den seg KeyError . |
popitem () | Fjerner og returnerer et vilkårlig element ( nøkkel, verdi ). Heves KeyError hvis ordboken er tom. |
setdefault (nøkkel (, d)) | Returnerer tilsvarende verdi hvis nøkkelen er i ordboken. Hvis ikke, setter du inn nøkkelen med verdien d og returnerer d (er som standard None ). |
oppdatering ((annet)) | Oppdaterer ordboken med nøkkel / verdipar fra andre, som overskriver eksisterende nøkler. |
verdier () | Returnerer et nytt objekt med ordbokens verdier |
Her er noen eksempler på bruk av disse metodene.
# Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))
Produksjon
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Vitenskap')
Python Dictionary Comprehension
Ordbokforståelse er en elegant og kortfattet måte å lage en ny ordbok fra en iterabel i Python.
Ordbokforståelse består av et uttrykkspar ( nøkkel: verdi ) etterfulgt av en for
uttalelse i krøllete bukseseler ()
.
Her er et eksempel for å lage en ordbok der hvert element er et par av et tall og dets firkant.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Produksjon
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Denne koden tilsvarer
squares = () for x in range(6): squares(x) = x*x print(squares)
Produksjon
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if
statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
# Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key
is in a dictionary or not using the keyword in
. Notice that the membership test is only for the keys
and not for the values
.
# Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for
loop.
# Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Innebygde funksjoner like all()
, any()
, len()
, cmp()
, sorted()
, etc. blir ofte brukt sammen med ordbøker for å utføre forskjellige oppgaver.
Funksjon | Beskrivelse |
---|---|
alle() | Gå tilbake True hvis alle tastene i ordboken er sanne (eller hvis ordboken er tom). |
noen() | Returner True hvis en hvilken som helst nøkkel i ordboken er sann. Hvis ordboken er tom, returner False . |
len () | Returner lengden (antall elementer) i ordboken. |
cmp () | Sammenligner elementer i to ordbøker. (Ikke tilgjengelig i Python 3) |
sortert () | Returner en ny sortert liste over nøkler i ordboken. |
Her er noen eksempler som bruker innebygde funksjoner til å jobbe med en ordbok.
# Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))
Produksjon
False True 6 (0, 1, 3, 5, 7, 9)