Python Dictionary (med eksempler)

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

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 keyog et tilsvarende valuesom 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 (), KeyErrorheves i tilfelle en nøkkel ikke blir funnet i ordboken. På den annen side get()returnerer metoden Nonehvis 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 keyog 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 delnø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 KeyErrorhvis 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 foruttalelse 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 Truehvis alle tastene i ordboken er sanne (eller hvis ordboken er tom).
noen() Returner Truehvis 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)

Interessante artikler...