I den här handledningen lär du dig allt om Python-ordböcker; hur de skapas, komma åt, lägga till, ta bort element från dem och olika inbyggda metoder.
Video: Python Dictionaries to Store key / value Pairs
Python-ordlistan är en oordnad samling objekt. Varje artikel i en ordlista har ett key/value
par.
Ordböcker är optimerade för att hämta värden när nyckeln är känd.
Skapa Python Dictionary
Att skapa en ordbok är lika enkelt som att placera objekt i lockiga hakparentes ()
åtskilda av kommatecken.
Ett objekt har a key
och motsvarande value
som uttrycks som ett par ( nyckel: värde ).
Även om värdena kan vara av vilken datatyp som helst och kan upprepas måste nycklarna vara av oföränderlig typ (sträng, nummer eller tupel med oföränderliga element) och måste vara unika.
# 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 ovan kan vi också skapa en ordbok med den inbyggda dict()
funktionen.
Åtkomst till element från ordlistan
Medan indexering används med andra datatyper för att komma åt värden, använder en ordlista keys
. Nycklar kan användas antingen inom hakparenteser ()
eller med get()
metoden.
Om vi använder hakparenteserna ()
, KeyError
höjs om en nyckel inte finns i ordboken. Å andra sidan get()
returnerar metoden None
om nyckeln inte hittas.
# 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 spårning (senaste samtalet senast): Fil "", rad 15, i tryck (my_dict ('address')) KeyError: 'address'
Ändra och lägga till ordbokselement
Ordböcker är förändrade. Vi kan lägga till nya artiklar eller ändra värdet på befintliga objekt med en uppdragsoperatör.
Om nyckeln redan finns uppdateras det befintliga värdet. Om nyckeln inte finns, läggs ett nytt ( nyckel: värde ) par till ordlistan.
# 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')
Ta bort element från ordlistan
Vi kan ta bort ett visst objekt i en ordlista med pop()
metoden. Denna metod tar bort ett objekt med det angivna key
och returnerar value
.
Den popitem()
metod kan användas för att ta bort och returnera en godtycklig (key, value)
punkt paret från ordboken. Alla föremål kan tas bort samtidigt med clear()
metoden.
Vi kan också använda del
nyckelordet för att ta bort enskilda objekt eller hela 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)
Produktion
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Spårning (senaste samtalet senast): Fil "", rad 30, i tryck (rutor) NameError: namn 'kvadrater' definieras inte
Python Dictionary Methods
Metoder som finns tillgängliga med en ordlista visas nedan. Några av dem har redan använts i exemplen ovan.
Metod | Beskrivning |
---|---|
klar() | Tar bort alla objekt från ordboken. |
kopiera() | Returnerar en grunt kopia av ordboken. |
fromkeys (seq (, v)) | Returnerar en ny ordlista med nycklar från seq och värde lika med v (standard None ). |
få (nyckel (, d)) | Returnerar nyckelvärdet. Om nyckeln inte finns, returnerar d (standardvärde None ). |
föremål () | Returnera ett nytt objekt av ordlistans objekt i (nyckel, värde) -format. |
nycklar () | Returnerar ett nytt objekt med ordlistans tangenter. |
pop (tangent (, d)) | Tar bort objektet med nyckeln och returnerar dess värde eller d om nyckeln inte hittas. Om d inte tillhandahålls och nyckeln inte hittas, höjs den KeyError . |
popitem () | Tar bort och returnerar ett godtyckligt objekt ( nyckel, värde ). Ökar KeyError om ordboken är tom. |
setdefault (nyckel (, d)) | Returnerar motsvarande värde om nyckeln finns i ordlistan. Om inte, infogar du nyckeln med värdet d och returnerar d (standard None ). |
uppdatering ((övrigt)) | Uppdaterar ordboken med nyckel / värdepar från andra, som skriver över befintliga nycklar. |
värden () | Returnerar ett nytt objekt med ordlistans värden |
Här är några exempel på användning av dessa 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
('Math': 0, 'English': 0, 'Science': 0) ('Math', 0) ('English', 0) ('Science', 0) ('English', 'Math', ' Vetenskap')
Python Dictionary Comprehension
Ordbokförståelse är ett elegant och koncist sätt att skapa en ny ordbok från en iterabel i Python.
Ordbokförståelse består av ett uttryckspar ( nyckel: värde ) följt av ett for
uttalande i lockiga hakparenteser ()
.
Här är ett exempel för att skapa en ordlista där varje objekt är ett par av ett nummer och dess kvadrat.
# 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)
Den här koden motsvarar
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
Inbyggda funktioner som all()
, any()
, len()
, cmp()
, sorted()
, etc. används ofta med ordböcker för att utföra olika uppgifter.
Fungera | Beskrivning |
---|---|
Allt() | Återvänd True om alla nycklar i ordboken är sanna (eller om ordboken är tom). |
några() | Returnera True om någon nyckel i ordboken är sant. Om ordboken är tom, återvänd False . |
len () | Returnera längden (antalet artiklar) i ordlistan. |
cmp () | Jämför artiklar i två ordböcker. (Ej tillgängligt i Python 3) |
sorterad() | Returnera en ny sorterad lista med nycklar i ordboken. |
Här är några exempel som använder inbyggda funktioner för att arbeta med en ordlista.
# 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
False True 6 (0, 1, 3, 5, 7, 9)