10 nyttige Python-ordbogsmetoder

Vil du lære at arbejde med Python-ordbøger? Denne tutorial vil dække Python-ordbogsmetoder til at læse, ændre og udføre andre almindelige operationer på Python-ordbøger.

Vi starter med at gennemgå det grundlæggende i Python-ordbøger og derefter oprette en eksempelordbog og ændre den ved hjælp af Python-ordbogsmetoder.

Lad os komme igang…

En oversigt over Python-ordbøger

Ordbøger er indbyggede datastrukturer i Python. Det lader dig gemme elementer i nøgleværdi-par – definere en tilknytning eller kortlægning mellem nøglerne og værdierne.

Nøglerne i en ordbog skal være unikke (for at de kan hashable). Du kan bruge tasten til at slå værdien op eller bruge indbyggede metoder (du lærer dem snart).

Når du opretter en Python-ordbog, kan du initialisere alle nøgleværdi-parrene eller initialisere en tom ordbog og derefter tilføje nøgleværdi-parrene.

>>> dict1 = {'language':'Python','like':True}
>>> type(dict1)
<class 'dict'>

# or we can do the following:

>>> dict1 = {}
>>> dict1['language']='Python'
>>> dict1['like']=True

Python-ordbogsmetoder til almindelige operationer

Bemærk: For at følge kodeeksemplerne skal du have Python 3.7 eller en nyere version installeret.

Du kan kode med i en Python REPL. Eller følg med i toadmin.dk’ online Python-editor.

>>> person = {'name':'Alice',
...           'city':'Portland',
...           'interest':'Programming',
...           'profession':'Developer'
...           }

Nu hvor vi har initialiseret en Python-ordbog, lad os begynde at gennemgå de forskellige ordbogsmetoder.

Få ordbogsnøglerne med nøgler()

En af de almindelige operationer, når du arbejder med en Python-ordbog, er at få adgang til alle nøgler, værdier og nøgleværdi-par. For at få nøglerne til en ordbog kan du kalde metoden keys() som vist:

>>> person.keys()
dict_keys(['name', 'city', 'interest', 'profession'])

Hent ordbogsværdierne med værdier()

Metoden values() returnerer alle værdierne og er nyttig, når du vil behandle disse værdier yderligere.

Lad os få adgang til alle værdierne i personordbogen:

>>> person.values()
dict_values(['Alice', 'Portland', 'Programming', 'Developer'])

Få nøgle-værdi-par med varer()

items()-metoden returnerer en liste over nøgleværdi-tupler. Hvis denne metode kaldes på personordbogen, returneres derfor en liste over nøgleværdi-tupler:

>>> person.items()
dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), 
           ('profession', 'Developer')])

Få en lavvandet kopi med kopi()

Copy()-metoden returnerer en overfladisk kopi af en Python-ordbog.

>>> person_cpy = person.copy()

Her er person_cpy en overfladisk kopi af personordbogen. Lad os ændre denne kopi ved at opdatere ‘navn’-tasten til ‘Bob’.

>>> person_cpy['name'] = 'Bob'
>>> person_cpy

Hvis du nu undersøger indholdet af ordbogen, kan du se, at ‘navnet’ er blevet opdateret til ‘Bob’.

{
 'name': 'Bob', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Den oprindelige personordbog er dog ikke blevet ændret.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Indstil standardværdier med setdefault()

Når du arbejder med Python-ordbøger, er det almindeligt at støde på KeyError-undtagelse, hvis nøglen ikke er til stede i ordbogen. Her er et eksempel, når vi forsøger at få adgang til ‘alder’-nøglen:

>>> person['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Du kan undgå sådanne fejl ved at bruge de indbyggede metoder setdefault() og get() metoder i stedet for at få adgang til værdien som ovenfor.

  7 Amazon Price Trackers at købe på det rigtige tidspunkt

Metoden setdefault(key) returnerer dict[‘key’] hvis nøglen er til stede i diktet.

>>> person.setdefault('name')
'Alice'

Når nøglen ikke er til stede, tilføjer den nøglen til ordbogen med standardværdien Ingen.

>>> person.setdefault('address')
>>> person

Her er ‘adresse’-tasten ikke til stede i personordbogen. Men vi ser, at den er blevet tilføjet med standardværdien Ingen.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': None 
}

Vi kan nu indstille ‘adresse’-tasten til en eller anden adresse:

>>> person['address'] = "10, xyz street"
>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street' 
}

Du kan også angive værdien i metodekaldet, som vist:

>>> person.setdefault('country','USA')
'USA'
>>> person

Da ‘land’-nøglen ikke oprindeligt findes i personordbogen, ser vi, at den er tilføjet med ‘USA’ som værdi.

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Få en specifik værdi med get()

Get()-metoden returnerer den værdi, der svarer til nøglen. Den tager også valgfrit en anden standardværdi, der returneres, hvis nøglen ikke findes i ordbogen.

Når vi forsøger at få adgang til værdien af ​​’navn’-nøglen, får vi ‘Alice’, da nøglen er til stede personligt:

>>> person.get('name')
'Alice'

Personordbogen har ikke en ‘gpa’-nøgle. Så når vi forsøger at få dens værdi, får vi intet ved Python REPL. Men hvis du udskriver værdien, får du Ingen.

>>> person.get('gpa')
>>> print(person.get('gpa'))
None

Men hvis du angiver den valgfrie standardværdi, får vi denne værdi i stedet for Ingen.

>>> person.get('gpa','not found')
'not found'

Men metoden get() tilføjer ikke ‘gpa’-nøglen til ordbogen.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Forstå setdefault() vs. get()

Selvom både setdefault() og get() metoderne kan bruges til at håndtere KeyError, lad os opsummere forskellene fra det, vi har lært:

  • dict.setdefault(key,val) tilføjer nøglen med val som standardværdi. Hvis værdi ikke er angivet, tilføjes nøglen med standardværdien Ingen.
  • dict.get(key,val) returnerer den værdi, der svarer til nøglen fra Python-ordbogen. Hvis nøglen ikke er til stede, returnerer den val (hvis angivet) eller Ingen – men tilføjer ikke nøglen til ordbogen.
  Sådan fastgør du en andens tweet til din profil

Du kan også bruge defaultdict i Python til at håndtere KeyErrors bedre.

Opdater ordbogsindhold med update()

Du kan opdatere en eksisterende Python-ordbog ved hjælp af nøgle-værdi-par fra en anden ordbog. Du kan også opdatere med indholdet af enhver Python iterable ved hjælp af update() metoden.

Lad os definere en mere_detaljer-ordbog. Vi opdaterer derefter personordbogen med indhold fra more_details-ordbogen:

>>> more_details = {'hobby':'singing', 'likes':'sweets'}
>>> person.update(more_details)

Fra outputtet nedenfor ser vi, at tasterne ‘hobby’ og ‘synes godt om’ er blevet tilføjet til personordbogen.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing', 
 'likes': 'sweets'
}

Fjern det sidst tilføjede element med popitem()

Ordbogsmetoden popitem() kan bruges til at fjerne det sidst tilføjede nøgleværdi-par.

>>> person.popitem()
('likes', 'sweets')

Som det ses, returnerer kald af popitem()-metoden i personordbogen (‘synes godt om’,’slik’) nøgleværdiparret – det sidst tilføjede element i ordbogen.

Det fjerner også nøgleværdi-parret. Du kan bekræfte dette ved at undersøge indholdet af ordbogen:

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing'
}

Fjern et ordbogselement med pop()

Vi ved, at ordbogsmetoden popitem() fjerner og returnerer det sidste nøgle-værdi-par i en Python-ordbog. Vi kan dog nogle gange være nødt til at fjerne andre elementer – ud over det sidst tilføjede nøgle-værdi-par.

  7 Amazon Price Trackers at købe på det rigtige tidspunkt

For at gøre dette kan vi bruge Python-ordbogsmetoden pop(): at bruge .pop(key) på ordbogen returnerer værdien svarende til nøglen og fjerner også nøgleværdi-parret fra ordbogen.

Her er et eksempel:

>>> person.pop('hobby')
'singing'

Da vi viste emnet, der svarer til nøglen ‘hobby’, ser vi, at det ikke længere findes i ordbogen.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Hvis vi sender en nøgle ind, der ikke eksisterer, støder vi ind i KeyError undtagelse, som vist:

>>> person.pop('age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Her støder vi på en KeyError-undtagelse, da ‘alders’-nøglen ikke er til stede i personordbogen.

I modsætning til list pop()-metoden, der fjerner det sidste element som standard, kræver ordbog pop()-metoden en nøgle. Hvis du ikke angiver en nøgle i metoden, løber vi ind i fejl.

>>> person.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0

Slet alle ordbogsartikler med clear()

Ordbog pop() og popitem() metoder fjerner ét nøgleværdi-par ad gangen. Hvis du vil slette alle elementerne i en ordbog, kan du bruge clear() metoden.

>>> person.clear()
>>> person
{}

Som det ses, fjerner kald af clear()-metoden i personordbogen alle nøgleværdi-par, og personordbogen er nu tom.

Sammenfatning af Python Dictionary Methods

Her er en hurtig gennemgang af Python-ordbogsmetoderne, vi har lært.

MethodSyntaxDescriptionkeys()dict1.keys()Returnerer nøglerne til dict1values()dict1.values()Returnerer værdierne af dict1items()dict1.items()Returnerer en liste over alle nøgleværdipar i dict1copy()dict1.copy() Returnerer en overfladisk kopi af dict1setdefault()dict1.setdefault(key, default_value)– Tilføjer nøgle med den valgfri default_value som nøglen til dict1 (når den ikke er angivet, er standardværdien Ingen)
– Returnerer dict1[key] hvis nøglen allerede er til stedeget()dict1.get(key,default_value)– Returnerer dict1[key] hvis nøgle er til stede i dict1; Ellers returnerer standardværdien
– Hvis nøgle ikke er til stede i dict1, og default_value ikke er angivet, returnerer Noneupdate()dict1.update(iterable1)Opdaterer dict1 med nøgleværdi-par fra iterable1popitem()dict1.popitem()Fjerner og returnerer det sidste nøgleværdi-par fra dict1pop()dict1.pop(key)– Fjerner og returnerer værdien svarende til nøglen: dict1[key]
– Hæver en KeyError, hvis nøglen ikke er til stede i dict1clear()dict1.clear()Sletter alle elementer fra dict1

Konklusion

Du har lært, hvordan du bruger almindelige metoder til at udføre læse-, opdaterings- og slettehandlinger på Python-ordbøger. Derudover lærte du også, hvordan metoderne get() og setdefault() kan bruges til at håndtere KeyError-undtagelser ved at returnere en standardværdi og tilføje en post med en standardværdi til henholdsvis Python-ordbogen. Du kan også sortere en Python-ordbog efter nøgle eller værdi.

Tjek derefter listen over nyttige Python-listemetoder. Glad kodning!