10 användbara Python Dictionary-metoder

Vill du lära dig hur man arbetar med Python-ordböcker? Denna handledning kommer att täcka Python-lexikonmetoder för att läsa, modifiera och utföra andra vanliga operationer på Python-ordböcker.

Vi börjar med att gå igenom grunderna i Python-ordböcker och sedan skapa en exempelordbok och modifiera den med Python-ordbokmetoder.

Låt oss börja…

En översikt över Python-ordböcker

Ordböcker är inbyggda datastrukturer i Python. Det låter dig lagra objekt i nyckel-värdepar – definiera en association eller mappa mellan nycklarna och värdena.

Nycklarna i en ordbok bör vara unika (för att de ska vara hashbara). Du kan använda nyckeln för att slå upp värdet eller använda inbyggda metoder (du kommer att lära dig dem inom kort).

När du skapar en Python-ordbok kan du initiera alla nyckel-värde-par eller initiera en tom ordbok och sedan lägga till nyckel-värde-par.

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

# or we can do the following:

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

Python Dictionary Methods for Common Operations

Obs: För att följa med kodexemplen måste du ha Python 3.7 eller en senare version installerad.

Du kan koda med i en Python REPL. Eller följ med i adminvista.com online Python-redigerare.

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

Nu när vi har initierat en Python-ordbok, låt oss börja gå igenom de olika ordboksmetoderna.

Hämta ordboksnycklarna med nycklar()

En av de vanligaste operationerna när man arbetar med en Python-ordbok är att komma åt alla nycklar, värden och nyckel-värdepar. För att få nycklarna till en ordbok kan du anropa metoden keys() som visas:

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

Hämta ordboksvärdena med värden()

Metoden values() returnerar alla värden och är användbar när du vill bearbeta dessa värden ytterligare.

Låt oss komma åt alla värden i personordboken:

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

Få nyckel-värdepar med objekt()

Metoden items() returnerar en lista med nyckel-värden-tupler. Att anropa den här metoden i personordboken returnerar därför en lista med nyckel-värde-tupler:

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

Få en grund kopia med copy()

Metoden copy() returnerar en ytlig kopia av en Python-ordbok.

>>> person_cpy = person.copy()

Här är person_cpy en ytlig kopia av personordboken. Låt oss ändra denna kopia genom att uppdatera ’namn’-nyckeln till ’Bob’.

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

Om du nu granskar innehållet i ordboken kan du se att ”namnet” har uppdaterats till ”Bob”.

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

Den ursprungliga personordboken har dock inte ändrats.

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

Ställ in standardvärden med setdefault()

När du arbetar med Python-ordböcker är det vanligt att du stöter på KeyError-undantag om nyckeln inte finns i ordboken. Här är ett exempel när vi försöker komma åt ”ålder”-nyckeln:

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

Du kan undvika sådana fel genom att använda de inbyggda metoderna setdefault() och get() istället för att komma åt värdet enligt ovan.

Metoden setdefault(key) returnerar dict[‘key’] om nyckeln finns i dikten.

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

När nyckeln inte finns, lägger den till nyckeln i ordboken med standardvärdet Ingen.

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

Här finns inte ’adress’-nyckeln i personordboken. Men vi ser att den har lagts till med standardvärdet None.

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

Vi kan nu ställa in ”adress”-nyckeln till någon adress:

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

Du kan också ange värdet i metodanropet, som visas:

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

Eftersom ’country’-nyckeln ursprungligen inte finns i personordboken ser vi att den har lagts till med ’USA’ som värde.

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

Få ett specifikt värde med get()

Metoden get() returnerar värdet som motsvarar nyckeln. Det tar också valfritt ett annat standardvärde som returneras om nyckeln inte hittas i ordboken.

När vi försöker komma åt värdet på ”namn”-nyckeln får vi ”Alice” eftersom nyckeln är närvarande personligen:

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

Personordboken har ingen ”gpa”-nyckel. Så när vi försöker få dess värde får vi ingenting vid Python REPL. Men om du skriver ut värdet får du inget.

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

Men om du anger det valfria standardvärdet får vi det värdet istället för Inget.

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

Metoden get() lägger dock inte till ”gpa”-nyckeln till ordboken.

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

Förstå setdefault() kontra get()

Även om både metoderna setdefault() och get() kan användas för att hantera KeyError, låt oss sammanfatta skillnaderna från vad vi har lärt oss:

  • dict.setdefault(nyckel,val) lägger till nyckeln med val som standardvärde. Om val inte tillhandahålls läggs nyckeln till med standardvärdet Ingen.
  • dict.get(key,val) returnerar värdet som motsvarar nyckeln från Python-ordboken. Om nyckeln inte finns, returnerar den val (om tillhandahållen) eller Ingen – men lägger inte till nyckeln i ordboken.

Du kan också använda defaultdict i Python för att hantera KeyErrors bättre.

Uppdatera ordbokens innehåll med update()

Du kan uppdatera en befintlig Python-ordbok med nyckel-värdepar från en annan ordbok. Du kan också uppdatera med innehållet i vilken Python som helst som kan itereras med metoden update().

Låt oss definiera en more_details-ordbok. Vi uppdaterar sedan personordboken med innehåll från more_details-ordboken:

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

Från utgången nedan ser vi att nycklarna ’hobby’ och ’gilla’ har lagts till i personordboken.

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

Ta bort det senast tillagda objektet med popitem()

Ordboksmetoden popitem() kan användas för att ta bort det senast tillagda nyckel-värdeparet.

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

Som sett, anropning av metoden popitem() i personordboken returnerar nyckel-värdeparet (’gillar’, ’godis’) – det senast tillagda objektet i ordboken.

Det tar också bort nyckel-värdeparet. Du kan bekräfta detta genom att granska innehållet i ordboken:

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

Ta bort ett ordboksobjekt med pop()

Vi vet att ordboksmetoden popitem() tar bort och returnerar det sista nyckel-värdeparet i en Python-ordbok. Men vi kan ibland behöva ta bort andra objekt – förutom det senast tillagda nyckel-värdeparet också.

För att göra detta kan vi använda Python-ordboksmetoden pop(): att använda .pop(nyckel) i ordboken returnerar värdet som motsvarar nyckeln och tar också bort nyckel-värdeparet från ordboken.

Här är ett exempel:

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

När vi poppade objektet som motsvarar nyckeln ”hobby”, ser vi att det inte längre finns i ordboken.

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

Om vi ​​skickar in en nyckel som inte finns, stöter vi på KeyError-undantaget, som visas:

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

Här stöter vi på ett KeyError-undantag eftersom ’ålder’-nyckeln inte finns i personordboken.

Till skillnad från list pop()-metoden som tar bort det sista objektet som standard, kräver dictionary pop()-metoden en nyckel. Om du inte anger en nyckel i metoden kommer vi att stöta på fel.

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

Ta bort alla ordboksartiklar med clear()

Metoderna ordbok pop() och popitem() tar bort ett nyckel-värdepar åt gången. Om du vill ta bort alla objekt i en ordbok kan du använda metoden clear().

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

Som sett, anropning av clear()-metoden i personordboken tar bort alla nyckel-värdepar och personordlistan är nu tom.

Sammanfattning av Python Dictionary Methods

Här är en snabb genomgång av Python-lexikonmetoderna vi har lärt oss.

MethodSyntaxDescriptionkeys()dict1.keys()Returnerar nycklarna för dict1values()dict1.values()Returnerar värdena för dict1items()dict1.items()Returnerar en lista över alla nyckel-värdepar i dict1copy()dict1.copy() Returnerar en ytlig kopia av dict1setdefault()dict1.setdefault(nyckel, default_value)– Lägger till nyckel med det valfria default_value som nyckel till dict1 (när det inte anges är standardvärdet Inget)
– Returnerar dict1[key] om nyckeln redan är närvarandeget()dict1.get(key,default_value)– Returnerar dict1[key] om nyckel finns i dict1; Annars returnerar standardvärdet
– Om nyckel inte finns i dict1 och default_value inte är angivet, returnerar Noneupdate()dict1.update(iterable1)Uppdaterar dict1 med nyckel-värdepar från iterable1popitem()dict1.popitem()Tar bort och returnerar det sista nyckel-värdeparet från dict1pop()dict1.pop(key)– Tar bort och returnerar värdet som motsvarar nyckeln: dict1[key]
– Tar fram ett KeyError om nyckeln inte finns i dict1clear()dict1.clear() Tar bort alla objekt från dict1

Slutsats

Du har lärt dig hur du använder vanliga metoder för att utföra läs-, uppdaterings- och raderingsoperationer på Python-ordböcker. Dessutom har du också lärt dig hur metoderna get() och setdefault() kan användas för att hantera KeyError-undantag genom att returnera ett standardvärde och lägga till en post med ett standardvärde till Python-ordboken. Du kan också sortera en Python-ordbok efter nyckel eller värde.

Kolla sedan in listan med användbara Python-listmetoder. Glad kodning!