back to top

I dizionari in Python

In Python i dizionari (dictionary), o semplicemente dict, sono delle raccolte non ordinate di oggetti che appartengono ai cosiddetti tipi di dato compound (o container) esattamente come le liste, le tuple e i set, ma differenza di questi i dizionari non presentano come elementi dei semplici dei valori, bensì delle coppie composte da chiavi e valori. Tale caratteristica è dovuta al fatto che i dizionari sono stati concepiti per reperire facilmente dei valori sulla base delle loro chiavi quando esse sono note allo sviluppatore.

Definzione di un dizionario

La sintassi per la creazione dei dizionari è semplice, infatti se ne può definire uno delimitando con le parensi quadre delle coppie formate caiscuna da una chiave associata al rispettivo valore tramite l’operatore ":" e separate da una virgola.

I valori delle coppie di un dizionario possono essere associati a qualsiasi tipo di dato e essere presenti più di una volta, le chiavi invece devono essere uniche e il loro tipo immutabile.

# Definizione di un dizionario
nome_dict = {1: 'homer', 2: 'bart'}
>>> nome_dict
{1: 'homer', 2: 'bart'}

Nell’esempio proposto in precendenza è stato definito un dizionario chiamato "nome_dict" composto da due coppie di chiavi e valori: la prima coppia ha come chiave "1" e come valore "homer", la seconda "2" come chiave e "bart" come valore.

Le chiavi non devono essere necessariamente numeriche così come i valori non devono essere obbligatoriamente delle stringhe:

# Definizione di un dizionario con chiavi di tipo stringa
nome_dict = {'nome':'homer','cognome':'simpson'}
>>> nome_dict
{'nome': 'homer', 'cognome': 'simpson'}
# Definizione di un dizionario con valori di tipo numerico
>>> nome_dict = {'primo':1,'secondo':2}
>>> nome_dict
{'secondo': 2, 'primo': 1}
# Definizione di un dizionario con valori e chiavi di tipo differente
nome_dict = {'nome':'marge',1:[4,6,8]}
>>> nome_dict
{'nome': 'marge', 1: [4, 6, 8]}

Python dispone anche di una sintassi alternativa per la definizione dei dizionari che prevede l’utilizzo della funzione nativa dict().

# Definizione di un dizionario con dict()
>>> nome_dict = dict({1:'php',2:'java'})
>>> nome_dict
{1: 'php', 2: 'java'}
# Definizione di un dizionario con dict()
# tramite una secquenza di elementi formati da coppie
>>> nome_dict = dict([(1,'python'),(2,'javascript')])
>>> nome_dict
{1: 'python', 2: 'javascript'}

Accedere agli elementi di un dizionario

Dato che i dizionari contengono coppie di chiavi e valori, il modo più semplice per accedere ad un valore è quello di fare riferimento alla relativa chiave; a tal fine si usa una sintassi che prevede di utilizzare il nome del dizionario seguito da una chiave inserita tra parentesi quadre:

# Accedere agli elementi di un dizionario
>>> nome_dict = {'nome':'montgomery','cognome':'burns','anni':102}
>>> nome_dict['cognome']
'burns'
>>> nome_dict['anni']
102

Il metodo get() offre una modalità alternativa per l’accesso agli elementi di un dizionario, esso accetta come parametro la chiave associata ad un determinato valore:

# Accedere agli elementi di un dizionario con get()
>>> nome_dict = {'nome':'apu','cognome':'Nahasapeemapetilon','anni':38}
>>> nome_dict
{'anni': 38, 'cognome': 'Nahasapeemapetilon', 'nome': 'apu'}
>>> nome_dict.get('cognome')
'Nahasapeemapetilon'
>>> 

La differenza sostanziale tra la prima metodologia e quella basata su get() sta nel fatto che il metodo non restituisce nulla nel caso in cui gli venga passata una chiave inesistente come argomento, con "nome_dict[‘nome_chiave_inesistente’]" verrebbe invece generato un errore.

Modificare gli elementi di un dizionario

Per modificare un elemento di un dizionario è sufficiente associare un nuovo valore alla chiave di una coppia:

# Modificare un elemento di un dizionario
>>> nome_dict = {1:'euro',2:'dollaro',3:'sterlina'}
>>> nome_dict
{1: 'euro', 2: 'dollaro', 3: 'sterlina'}
>>> nome_dict[2] = 'dollaro USA'
>>> nome_dict
{1: 'euro', 2: 'dollaro USA', 3: 'sterlina'}

In tutte le operazioni di manipolazione dei dizionari (ad esempio modifica e rimozione) è sempre bene tenere presente che a differenza di quanto accade con le liste e le tuple, nei dizionari non abbiamo un’indicizzazione automatica da "0" a "n" operata dall’inteprete di Python, ma delle chiavi definite dall’utente; si dovranno quindi utilizzare sempre queste ultime per l’accesso ai valori.

Aggiunta di un elemento in un dizionario

Per aggiungere un elemento ad un dizionario si deve specificare una nuova chiave associando ad essa un valore utilizzando la sintassi impiegata nell’esempio seguente:

# Aggiungere un elemento ad un dizionario
>>> nome_dict = {'Europa':'euro','USA':'dollaro','UK':'sterlina'}
>>> nome_dict
{'Europa': 'euro', 'USA': 'dollaro', 'UK': 'sterlina'}
>>> nome_dict['Svizzera'] = 'franco'
>>> nome_dict
{'Europa': 'euro', 'USA': 'dollaro', 'UK': 'sterlina', 'Svizzera': 'franco'}

Quando si effettua l’inserimento di un’ulteriore coppia chiave/valore in un dizionario è necessario fare attenzione al nome utilizzato per la nuova chiave, questo perché se si dovesse indicare il nome di una chiave già presente nel dizionario il suo valore verrà aggiornato.

Rimozione di un elemento da un dizionario

Il metodo pop() consente di rimuovere una coppia chiave/valore da un dizionario accettando come parametro la chiave della coppia che si vuole eliminare; l’engine di Python si occuperà di mostrare a video il valore che sarà rimosso insieme alla chiave:

# Rimozione di un elemento da un dizionario
>>> nome_dict = {'a':1,'b':2,'c':3,'d':4,e:'f'}
>>> nome_dict
{'a': 1, 'd': 4, 'b': 2, 'c': 3, 'f': 6, 'e': 5}
>>> nome_dict.pop('b')
2
>>> nome_dict
{'a': 1, 'd': 4, 'c': 3, 'f': 6, 'e': 5}

Il metodo popitem() funziona in modo simile a pop() ma con la differenza che esso non accetta alcun parametro, in pratica richiamando questo metodo l’interprete di Python provvede a scegliere in modo arbitrario la coppia chiave/valore da eliminare:

# Rimozione di un elemento da un dizionario con popitem() 
>>> nome_dict.popitem()
('a', 1)
>>> nome_dict
{'d': 4, 'c': 3, 'f': 6, 'e': 5}
>>> 

clear() è invece il metodo da utilizzare per cancellare tutto il contenuto di un dizionario tramite un’unica istruzione:

# Cancellare il contenuto di un dizionario con clear() 
>>> nome_dict.clear()
>>> nome_dict
{}

La funzione del() funziona infine come il metodo pop() quando le viene passata come argomento la chiave di una coppia, ma può essere utilizzato anche per cancellare definitivamente un dizionario:

# Cancellare un dizionario con del()
>>> del nome_dict
>>> nome_dict
Traceback (most recent call last):
  File "<pyshell#26>", line 1, in <module>
    nome_dict
NameError: name 'nome_dict' is not defined

Tentando di richiamare un dizionario cancellato con del() l’interprete di Python informerà lo sviluppatore che esso non è stato definito.

Pubblicità
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.