In deze tutorial leer je alles over Python-woordenboeken; hoe ze worden gemaakt, toegang krijgen tot, toevoegen, verwijderen van elementen en verschillende ingebouwde methoden.
Video: Python-woordenboeken om sleutel / waarde-paren op te slaan
Python-woordenboek is een ongeordende verzameling items. Elk item van een woordenboek heeft een key/value
paar.
Woordenboeken zijn geoptimaliseerd om waarden op te halen als de sleutel bekend is.
Python-woordenboek maken
Het maken van een woordenboek is net zo eenvoudig als items tussen accolades plaatsen, ()
gescheiden door komma's.
Een item heeft een key
en een corresponderend item value
dat wordt uitgedrukt als een paar ( sleutel: waarde ).
Hoewel de waarden van elk gegevenstype kunnen zijn en kunnen worden herhaald, moeten sleutels van een onveranderlijk type zijn (string, nummer of tuple met onveranderlijke elementen) en uniek zijn.
# 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')))
Zoals u hierboven kunt zien, kunnen we ook een woordenboek maken met behulp van de ingebouwde dict()
functie.
Toegang tot elementen uit woordenboek
Terwijl indexering wordt gebruikt met andere gegevenstypen om toegang te krijgen tot waarden, gebruikt een woordenboek keys
. Toetsen kunnen worden gebruikt tussen vierkante haken ()
of met de get()
methode.
Als we de vierkante haken gebruiken ()
, KeyError
wordt verhoogd als een sleutel niet in het woordenboek wordt gevonden. Aan de andere kant get()
keert de methode terug None
als de sleutel niet wordt gevonden.
# 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'))
Uitvoer
Jack 26 Geen Traceback (meest recente oproep laatste): File "", regel 15, in print (my_dict ('address')) KeyError: 'address'
Woordenboekelementen wijzigen en toevoegen
Woordenboeken zijn veranderlijk. We kunnen nieuwe items toevoegen of de waarde van bestaande items wijzigen met een toewijzingsoperator.
Als de sleutel al aanwezig is, wordt de bestaande waarde bijgewerkt. Als de sleutel niet aanwezig is, wordt een nieuw ( sleutel: waarde ) paar aan het woordenboek toegevoegd.
# 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)
Uitvoer
('naam': 'Jack', 'leeftijd': 27) ('naam': 'Jack', 'leeftijd': 27, 'adres': 'Centrum')
Elementen verwijderen uit Dictionary
We kunnen een bepaald item in een woordenboek verwijderen door de pop()
methode te gebruiken. Deze methode verwijdert een item met het opgegeven item key
en retourneert de value
.
De popitem()
methode kan worden gebruikt om een willekeurig (key, value)
itempaar uit het woordenboek te verwijderen en terug te sturen . Alle items kunnen in één keer worden verwijderd met behulp van de clear()
methode.
We kunnen het del
trefwoord ook gebruiken om afzonderlijke items of het hele woordenboek zelf te verwijderen.
# 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)
Uitvoer
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (meest recente oproep laatste): Bestand "", regel 30, in print (squares) NameError: naam 'squares' is niet gedefinieerd
Python-woordenboekmethoden
De methoden die beschikbaar zijn met een woordenboek, worden hieronder in tabelvorm weergegeven. Sommige zijn al gebruikt in de bovenstaande voorbeelden.
Methode | Omschrijving |
---|---|
Doorzichtig() | Verwijdert alle items uit het woordenboek. |
kopiëren() | Retourneert een ondiepe kopie van het woordenboek. |
fromkeys (seq (, v)) | Retourneert een nieuw woordenboek met sleutels uit seq en waarde gelijk aan v (standaard ingesteld op None ). |
krijgen (sleutel (, d)) | Retourneert de waarde van de sleutel. Als de sleutel niet bestaat, retourneert d (standaard None ). |
artikelen () | Retourneer een nieuw object van de items uit het woordenboek in (key, value) -indeling. |
sleutels () | Retourneert een nieuw object van de woordenboeksleutels. |
pop (key (, d)) | Verwijdert het item met de sleutel en retourneert de waarde of d als de sleutel niet wordt gevonden. Als d niet wordt opgegeven en de sleutel wordt niet gevonden, gaat hij omhoog KeyError . |
popitem () | Verwijdert en retourneert een willekeurig item ( sleutel, waarde ). Gaat omhoog KeyError als het woordenboek leeg is. |
setdefault (key (, d)) | Geeft de overeenkomstige waarde terug als de sleutel in het woordenboek staat. Als dit niet het geval is, voegt u de sleutel met de waarde d in en retourneert d (standaard None ). |
update ((andere)) | Updates the dictionary with the key/value pairs from other, overwriting existing keys. |
values() | Returns a new object of the dictionary's values |
Here are a few example use cases of these methods.
# 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())))
Output
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', 'Science')
Python Dictionary Comprehension
Dictionary comprehension is an elegant and concise way to create a new dictionary from an iterable in Python.
Dictionary comprehension consists of an expression pair (key: value) followed by a for
statement inside curly braces ()
.
Here is an example to make a dictionary with each item being a pair of a number and its square.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Output
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
This code is equivalent to
squares = () for x in range(6): squares(x) = x*x print(squares)
Output
(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
Ingebouwde functies willen all()
, any()
, len()
, cmp()
, sorted()
, enz. Worden vaak gebruikt in combinatie met woordenboeken om verschillende taken uit te voeren.
Functie | Omschrijving |
---|---|
alle() | Keer terug True als alle sleutels van het woordenboek Waar zijn (of als het woordenboek leeg is). |
ieder() | Keer terug True als een sleutel van het woordenboek waar is. Ga terug als het woordenboek leeg is False . |
len () | Retourneer de lengte (het aantal items) in het woordenboek. |
cmp () | Vergelijkt items van twee woordenboeken. (Niet beschikbaar in Python 3) |
gesorteerd () | Retourneer een nieuwe gesorteerde lijst met sleutels in het woordenboek. |
Hier zijn enkele voorbeelden die ingebouwde functies gebruiken om met een woordenboek te werken.
# 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))
Uitvoer
Niet waar Waar 6 (0, 1, 3, 5, 7, 9)