I denne vejledning lærer du alt om Python-ordbøger; hvordan de oprettes, få adgang til, tilføje, fjerne elementer fra dem og forskellige indbyggede metoder.
Video: Python Dictionaries to Store key / value Pairs
Python-ordbog er en ikke-ordnet samling af genstande. Hvert emne i en ordbog har et key/value
par.
Ordbøger er optimeret til at hente værdier, når nøglen er kendt.
Oprettelse af Python Dictionary
Oprettelse af en ordbog er lige så simpelt som at placere elementer i krøllede parenteser ()
adskilt af kommaer.
Et element har et key
og et tilsvarende value
, der udtrykkes som et par ( nøgle: værdi ).
Mens værdierne kan være af en hvilken som helst datatype og kan gentages, skal nøglerne være af uforanderlig type (streng, nummer eller tuple med uforanderlige elementer) og skal være unikke.
# 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å oprette en ordbog ved hjælp af den indbyggede dict()
funktion.
Adgang til elementer fra ordbogen
Mens indeksering bruges med andre datatyper for at få adgang til værdier, bruger en ordbog keys
. Tasterne kan bruges enten inden for firkantede parenteser ()
eller med get()
metoden.
Hvis vi bruger de firkantede parenteser ()
, KeyError
hæves, hvis der ikke findes en nøgle i ordbogen. På den anden side get()
vender metoden tilbage, None
hvis nøglen ikke findes.
# 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'))
Produktion
Jack 26 Ingen sporbarhed (seneste opkald sidst): Fil "", linje 15, i tryk (my_dict ('adresse')) KeyError: 'adresse'
Ændring og tilføjelse af ordbogselementer
Ordbøger kan ændres. Vi kan tilføje nye varer eller ændre værdien af eksisterende varer ved hjælp af en opgaveoperatør.
Hvis nøglen allerede er til stede, opdateres den eksisterende værdi. Hvis nøglen ikke er til stede, tilføjes et nyt ( nøgle: værdi ) par til ordbogen.
# 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)
Produktion
('name': 'Jack', 'age': 27) ('name': 'Jack', 'age': 27, 'address': 'Downtown')
Fjernelse af elementer fra ordbogen
Vi kan fjerne et bestemt element i en ordbog ved hjælp af pop()
metoden. Denne metode fjerner et element med det medfølgende key
og returnerer value
.
Den popitem()
Fremgangsmåden kan anvendes til at fjerne og returnere en vilkårlig (key, value)
element par fra ordbogen. Alle emner kan fjernes på én gang ved hjælp af clear()
metoden.
Vi kan også bruge del
nøgleordet til at fjerne enkelte emner eller hele selve ordbogen.
# 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)
Produktion
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (seneste opkald sidst): Fil "", linje 30, med tryk (firkanter) NameError: navn 'firkanter' er ikke defineret
Python Dictionary Methods
Metoder, der er tilgængelige med en ordbog, er anført nedenfor. Nogle af dem er allerede blevet brugt i ovenstående eksempler.
Metode | Beskrivelse |
---|---|
klar() | Fjerner alle emner fra ordbogen. |
kopi() | Returnerer en lav kopi af ordbogen. |
fromkeys (seq (, v)) | Returnerer en ny ordbog med nøgler fra seq og værdi lig med v (standard None ). |
få (nøgle (, d)) | Returnerer værdien af nøglen. Hvis nøglen ikke findes, returneres d (er som standard None ). |
varer () | Returner et nyt objekt med ordbogens emner i (nøgle, værdi) format. |
nøgler () | Returnerer et nyt objekt med ordbogens taster. |
pop (tast (, d)) | Fjerner elementet med nøglen og returnerer dens værdi eller d, hvis nøglen ikke findes. Hvis d ikke er angivet, og nøglen ikke findes, hæves den KeyError . |
popitem () | Fjerner og returnerer en vilkårlig vare ( nøgle, værdi ). Stiger, KeyError hvis ordbogen er tom. |
setdefault (nøgle (, d)) | Returnerer den tilsvarende værdi, hvis nøglen er i ordbogen. Hvis ikke, indsætter du nøglen med værdien d og returnerer d (standard None ). |
opdatering ((andet)) | Opdaterer ordbogen med nøgle / værdipar fra andre overskrivende eksisterende nøgler. |
værdier () | Returnerer et nyt objekt med ordbogens værdier |
Her er et par eksempler på anvendelse af disse metoder.
# 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())))
Produktion
('Matematik': 0, 'Engelsk': 0, 'Videnskab': 0) ('Matematik', 0) ('Engelsk', 0) ('Videnskab', 0) ('Engelsk', 'Matematik', ' Videnskab')
Python Dictionary Comprehension
Ordbog forståelse er en elegant og kortfattet måde at oprette en ny ordbog fra en iterabel i Python.
Ordbogsforståelse består af et udtrykspar ( nøgle: værdi ) efterfulgt af en for
sætning inde i krøllede seler ()
.
Her er et eksempel på at lave en ordbog, hvor hvert element er et par af et tal og dets firkant.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Produktion
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Denne kode svarer til
squares = () for x in range(6): squares(x) = x*x print(squares)
Produktion
(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
Indbyggede funktioner gerne all()
, any()
, len()
, cmp()
, sorted()
etc. er almindeligt anvendt med ordbøger til at udføre forskellige opgaver.
Fungere | Beskrivelse |
---|---|
alle() | Returner, True hvis alle nøgler i ordbogen er sande (eller hvis ordbogen er tom). |
nogen() | Returner, True hvis en hvilken som helst nøgle til ordbogen er sand. Hvis ordbogen er tom, skal du vende tilbage False . |
len () | Returner længden (antallet af emner) i ordbogen. |
cmp () | Sammenligner emner i to ordbøger. (Ikke tilgængelig i Python 3) |
sorteret () | Returner en ny sorteret liste med nøgler i ordbogen. |
Her er nogle eksempler, der bruger indbyggede funktioner til at arbejde med en ordbog.
# 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))
Produktion
Falsk sand 6 (0, 1, 3, 5, 7, 9)