Python Dictionary (med exempel)

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/valuepar.

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 keyoch motsvarande valuesom 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 (), KeyErrorhöjs om en nyckel inte finns i ordboken. Å andra sidan get()returnerar metoden Noneom 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 keyoch 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 delnyckelordet 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 KeyErrorom 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 foruttalande 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 Trueom alla nycklar i ordboken är sanna (eller om ordboken är tom).
några() Returnera Trueom 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)

Intressanta artiklar...