Python: i dizionari e la dictionary comprehension

Python: i dizionari e la dictionary comprehension

22 Ago 2018 5 Di Admin M.

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:

 

Dizionari - Python

 

 

Possiamo anche inizializzare un dizionario nel seguente modo:

 

Inizializzazione dizionario - Python

 

 


Un dizionario vuoto è indicato da due parentesi graffe vuote.


 

Proviamo a visualizzare il dizionario che abbiamo appena creato:

 

Visualizzazione dizionario - Python

 

 

Ora estraiamo un valore dal dizionario:

 

Estrarre un valore dal dizionario - Python

 

 

Quindi proviamo ad aggiungergli un nuovo valore:

 

Aggiungere un nuovo elemento al dizionario - Python

 

 

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:

 

metodo keys dizionario - Python

 

 

Come possiamo sapere se una determinata chiave è presente o meno nel dizionario?

L’operatore “in” fa al caso nostro:

 

Operatore "in" dizionario - Python

 

 

Ovviamente possiamo anche cancellare un elemento dal dizionario; basta semplicemente specificare la sua chiave con il comando del: 

 

Comando "del" dizionario - Python

 

 

  • 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:

 

Metodo "clear" dizionario - Python

 

 

  • get  permette di estrarre un valore di default, qualora la chiave specificata non sia presente:

 

Metodo "get" dizionario - Python

 

 

  • setdefault  permette di estrarre un valore di default, ma aggiungendolo al dizionario qualora la chiave specificata non esista:

 

Metodo "setdefault" dizionario - Python

 

 

  • values è il gemello speculare di keys, invece delle chiavi però estrae tutti gli elementi:

 

Metodo "values" dizionario - Python

 

  • items, infine, è la “somma” di keys e values. Infatti restituisce un oggetto che contiene le coppie chiave/valore del dizionario, sotto forma di tuple:

 

Metodo "items" dizionario - Python

 

 

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:

 

Dictionary comprehension - Python

 


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.


 

python machine learning

 

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!