10 utili metodi del dizionario Python

Stai cercando di imparare a lavorare con i dizionari Python? Questo tutorial coprirà i metodi del dizionario Python per leggere, modificare ed eseguire altre operazioni comuni sui dizionari Python.

Inizieremo rivedendo le basi dei dizionari Python, quindi creeremo un dizionario di esempio e lo modificheremo utilizzando i metodi del dizionario Python.

Iniziamo…

Una panoramica dei dizionari Python

I dizionari sono strutture dati integrate in Python. Ti consente di archiviare elementi in coppie chiave-valore, definendo un’associazione o una mappatura tra chiavi e valori.

Le chiavi in ​​un dizionario dovrebbero essere univoche (per essere hashable). Puoi utilizzare la chiave per cercare il valore o utilizzare metodi integrati (li imparerai a breve).

Quando crei un dizionario Python, puoi inizializzare tutte le coppie chiave-valore o inizializzare un dizionario vuoto e quindi aggiungere le coppie chiave-valore.

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

# or we can do the following:

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

Metodi del dizionario Python per operazioni comuni

Nota: per seguire gli esempi di codice, è necessario che sia installato Python 3.7 o una versione successiva.

Puoi codificare insieme in un REPL Python. Oppure segui l’editor Python online di winadmin.it.

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

Ora che abbiamo inizializzato un dizionario Python, iniziamo a esaminare i vari metodi del dizionario.

Ottieni le chiavi del dizionario con keys()

Una delle operazioni comuni quando si lavora con un dizionario Python è accedere a tutte le chiavi, i valori e le coppie chiave-valore. Per ottenere le chiavi di un dizionario, puoi chiamare il metodo keys() come mostrato:

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

Ottieni i valori del dizionario con i valori ()

Il metodo values() restituisce tutti i valori ed è utile quando si desidera elaborare ulteriormente questi valori.

Accediamo a tutti i valori nel dizionario persona:

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

Ottieni coppie di valori-chiave con gli elementi()

Il metodo items() restituisce un elenco di tuple di valori-chiave. Pertanto, chiamando questo metodo sul dizionario persona restituisce un elenco di tuple chiave-valore:

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

Ottieni una copia superficiale con copy()

Il metodo copy() restituisce una copia superficiale di un dizionario Python.

>>> person_cpy = person.copy()

Qui person_cpy è una copia superficiale del dizionario person. Modifichiamo questa copia aggiornando la chiave ‘name’ in ‘Bob’.

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

Ora, se esamini il contenuto del dizionario, puoi vedere che il ‘nome’ è stato aggiornato in ‘Bob’.

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

Tuttavia, il dizionario persona originale non è stato modificato.

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

Imposta i valori predefiniti con setdefault()

Quando si lavora con i dizionari Python, è comune imbattersi nell’eccezione KeyError se la chiave non è presente nel dizionario. Ecco un esempio quando proviamo ad accedere alla chiave ‘età’:

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

È possibile evitare tali errori utilizzando i metodi predefiniti setdefault() e get() invece di accedere al valore come sopra.

Il metodo setdefault(key) restituisce dict[‘key’] se la chiave è presente nel dict.

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

Quando la chiave non è presente, la aggiunge al dizionario con il valore predefinito Nessuno.

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

Qui la chiave ‘indirizzo’ non è presente nel dizionario persona. Ma vediamo che è stato aggiunto con il valore predefinito Nessuno.

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

Ora possiamo impostare la chiave ‘indirizzo’ su un indirizzo:

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

Puoi anche specificare il valore nella chiamata al metodo, come mostrato:

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

Poiché la chiave ‘country’ non è originariamente presente nel dizionario person, vediamo che è stata aggiunta con ‘USA’ come valore.

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

Ottieni un valore specifico con get()

Il metodo get() restituisce il valore corrispondente alla chiave. Facoltativamente accetta anche un altro valore predefinito che viene restituito se la chiave non viene trovata nel dizionario.

Quando proviamo ad accedere al valore della chiave ‘nome’, otteniamo ‘Alice’ poiché la chiave è presente di persona:

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

Il dizionario persona non ha una chiave ‘gpa’. Quindi, quando proviamo a ottenere il suo valore, non otteniamo nulla al REPL di Python. Tuttavia, se stampi il valore, otterrai Nessuno.

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

Ma se fornisci il valore predefinito facoltativo, otteniamo quel valore invece di Nessuno.

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

Tuttavia, il metodo get() non aggiunge la chiave ‘gpa’ al dizionario.

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

Comprendere setdefault() rispetto a get()

Sebbene entrambi i metodi setdefault() e get() possano essere utilizzati per gestire KeyError, riassumiamo le differenze rispetto a ciò che abbiamo appreso:

  • dict.setdefault(key,val) aggiunge la chiave con val come valore predefinito. Se val non viene fornito, la chiave viene aggiunta con il valore predefinito None.
  • dict.get(key,val) restituisce il valore corrispondente alla chiave dal dizionario Python. Se la chiave non è presente, restituisce val (se fornito) o None, ma non aggiunge la chiave al dizionario.

Puoi anche usare defaultdict in Python per gestire meglio KeyErrors.

Aggiorna i contenuti del dizionario con update()

Puoi aggiornare un dizionario Python esistente utilizzando coppie chiave-valore da un altro dizionario. Puoi anche aggiornare con i contenuti di qualsiasi iterabile Python usando il metodo update().

Definiamo un dizionario more_details. Aggiorniamo quindi il dizionario delle persone con i contenuti del dizionario more_details:

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

Dall’output seguente, vediamo che le chiavi ‘hobby’ e ‘mi piace’ sono state aggiunte al dizionario delle persone.

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

Rimuovi l’ultimo elemento aggiunto con popitem()

Il metodo del dizionario popitem() può essere utilizzato per rimuovere l’ultima coppia chiave-valore aggiunta.

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

Come visto, chiamando il metodo popitem() sul dizionario person si restituisce la coppia chiave-valore (‘likes’,’sweets’), l’ultimo elemento aggiunto nel dizionario.

Rimuove anche la coppia chiave-valore. Puoi confermarlo esaminando il contenuto del dizionario:

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

Rimuovi un elemento del dizionario con pop()

Sappiamo che il metodo del dizionario popitem() rimuove e restituisce l’ultima coppia chiave-valore in un dizionario Python. Tuttavia, a volte potremmo dover rimuovere altri elementi, oltre all’ultima coppia chiave-valore aggiunta.

Per fare questo, possiamo usare il metodo del dizionario Python pop(): l’uso di .pop(key) sul dizionario restituisce il valore corrispondente alla chiave e rimuove anche la coppia chiave-valore dal dizionario.

Ecco un esempio:

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

Spuntando la voce corrispondente al tasto ‘hobby’, vediamo che non è più presente nel dizionario.

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

Se passiamo una chiave che non esiste, ci imbattiamo nell’eccezione KeyError, come mostrato:

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

Qui, ci imbattiamo in un’eccezione KeyError in quanto la chiave ‘età’ non è presente nel dizionario persona.

A differenza del metodo list pop() che rimuove l’ultimo elemento per impostazione predefinita, il metodo dictionary pop() richiede una chiave. Se non specifichi una chiave nel metodo, ci imbatteremo in errori.

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

Elimina tutti gli elementi del dizionario con clear()

I metodi dictionary pop() e popitem() rimuovono una coppia chiave-valore alla volta. Se vuoi eliminare tutti gli elementi in un dizionario, puoi usare il metodo clear().

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

Come visto, la chiamata al metodo clear() sul dizionario persona rimuove tutte le coppie chiave-valore e il dizionario persona ora è vuoto.

Riepilogo dei metodi del dizionario Python

Ecco una rapida rassegna dei metodi del dizionario Python che abbiamo imparato.

MetodoSintassiDescrizionekeys()dict1.keys()Restituisce le chiavi di dict1values()dict1.values()Restituisce i valori di dict1items()dict1.items()Restituisce un elenco di tutte le coppie chiave-valore in dict1copy()dict1.copy() Restituisce una copia superficiale di dict1setdefault()dict1.setdefault(key, default_value)– Aggiunge key con l’opzionale default_value come chiave a dict1 (se non specificato, il valore predefinito è None)
– Restituisce dict1[key] se la chiave è già presente get()dict1.get(key,default_value)– Restituisce dict1[key] se la chiave è presente in dict1; Altrimenti, restituisce default_value
– Se key non è presente in dict1 e default_value non è specificato, restituisce Noneupdate()dict1.update(iterable1)Aggiorna dict1 con coppie chiave-valore da iterable1popitem()dict1.popitem()Rimuove e restituisce l’ultima coppia chiave-valore da dict1pop()dict1.pop(key)– Rimuove e restituisce il valore corrispondente alla chiave: dict1[key]
– Solleva un KeyError se la chiave non è presente in dict1clear()dict1.clear()Elimina tutti gli elementi da dict1

Conclusione

Hai imparato come utilizzare metodi comuni per eseguire operazioni di lettura, aggiornamento ed eliminazione sui dizionari Python. Inoltre, hai anche imparato come i metodi get() e setdefault() possono essere usati per gestire le eccezioni KeyError restituendo rispettivamente un valore predefinito e aggiungendo una voce con un valore predefinito al dizionario Python. Puoi anche ordinare un dizionario Python per chiave o per valore.

Successivamente, controlla l’elenco degli utili metodi dell’elenco Python. Buona programmazione!