
Python: i dizionari e la dictionary comprehension
22 Agosto 2018I 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!
[…] prossimi articoli affronteremo: liste, stringhe, tuple, insiemi, dizionari e dati […]
[…] la nostra guida alla programmazione con Python, a seguire: stringhe, tuple, insiemi, dizionari e dati […]
[…] sezione dedicata, non perdere i prossimi articoli sugli altri tipi di dati in Python: insiemi, dizionari, numeri, valori […]
[…] possiamo procedere con i dizionari e gli ultimi tipi di dati per passare finalmente poi alla sintassi, alle eccezioni, funzioni, […]
[…] forma è possibile perché, come abbiamo visto nell’articolo dedicato ai dizionari, il metodo items di un dizionario restituisce un oggetto iterabile come sequenza di tuple, composte […]
[…] vogliamo passare come parametro unico un dizionario, usando le sue chiavi nominalmente, possiamo approfittare della sintassi avanzata di passaggio […]