I dizionari (dictionary) sono il tipo di dati di Python di cui sentiamo più la mancanza quando abbiamo a che fare con un altro linguaggio di programmazione che ne è privo.
La definizione ufficiale di un dizionario è array associativo.
Per capire meglio di cosa stiamo parlando, esaminiamo un esempio. Dobbiamo creare un dizionario e assegnargli qualche valore:
Possiamo anche inizializzare un dizionario nel seguente modo:
Un dizionario vuoto è indicato da due parentesi graffe vuote.
Proviamo a visualizzare il dizionario che abbiamo appena creato:
Ora estraiamo un valore dal dizionario:
Quindi proviamo ad aggiungergli un nuovo valore:
Cominciamo ad afferrare il concetto?
Un dizionario è un insieme di oggetti che possiamo estrarre attraverso una chiave. La chiave in questione è quella che abbiamo usato in fase di assegnamento.
Per elencare tutte le chiavi di un dizionario possiamo usare il metodo keys:
Come possiamo sapere se una determinata chiave è presente o meno nel dizionario?
L’operatore “in” fa al caso nostro:
Ovviamente possiamo anche cancellare un elemento dal dizionario; basta semplicemente specificare la sua chiave con il comando del:
- Che cosa possiamo assegnare a un elemento di un dizionario? Qualsiasi oggetto Python, perfino una funzione o una classe (anche se abbiamo ancora visto come si usano).
- E che cosa possiamo usare come chiave di un elemento? Qualsiasi oggetto immutabile: quindi una stringa, un intero, ma anche una tupla.
Una tupla può essere usata come chiave di un dizionario solo se non contiene, direttamente o indirettamente, altri oggetti modificabili.
Una tupla che contiene una lista non può essere quindi usata come chiave di un dizionario.
Non si può neppure utilizzare un insieme perché è un oggetto modificabile;
esiste però una versione immutabile chiamata frozenset (“insieme congelato”) che è per i set quello che sono le tuple per le liste.
Essendo un oggetto immutabile può essere quindi usato come chiave di un dizionario.
Principali metodi per i dizionari
Anche i dizionari hanno diversi metodi che ne facilitano l’utilizzo:
- clear cancella tutti gli elementi di un dizionario:
- get permette di estrarre un valore di default, qualora la chiave specificata non sia presente:
- setdefault permette di estrarre un valore di default, ma aggiungendolo al dizionario qualora la chiave specificata non esista:
- values è il gemello speculare di keys, invece delle chiavi però estrae tutti gli elementi:
- items, infine, è la “somma” di keys e values. Infatti restituisce un oggetto che contiene le coppie chiave/valore del dizionario, sotto forma di tuple:
La dictionary comprehension
I dizionari non potevano essere da meno rispetto alle liste e agli insiemi, quindi anche loro presentano il costrutto della comprehension.
Insiemi e dizionari condividono le parentesi graffe come caratteri indicatori del loro tipo di dato.
Ma non c’è rischio di confusione: la comprehension dei dizionari si differenzia da quella degli insiemi perché è composta da coppie chiavi e valori.
Chiariamo con un esempio:
In questo esempio abbiamo usato la dictionary comprehension per invertire chiavi e valori di un dizionario.
Se quest’ultimo avesse avuto due chiavi identiche, nel dizionario finale avremmo avuto solo uno dei due valore e senza poter stabilire a priori quale,
in quanto l’ordine delle tuple restituite da items dipende dai valori di hashing interni a Python.
Conosciuti anche i dizionari, adesso finalmente mancano soltanto gli ultimi tipi di dati che tratteremo nel prossimo articolo, dopodiché potremmo dedicarci alla sintassi e alle altre funzionalità del nostro buon Python!
Continua a seguire la nostra guida alla programmazione con Python, puoi trovarla cliccando qui!
6 risposte