Ogni linguaggio di programmazione offre una struttura dati di tipo chiave/valore che permette di associare ad uno specifico dato (di qualsiasi tipo) una chiave per il suo recupero immediato.
In Python, i dictionary ricoprono esattamente tale ruolo. Ma come si usano?
Scopriamolo in questo articolo.
Usare un dictionary in Python è fondamentale se vuoi associare valori a chiavi specifiche per poi recuperarli facilmente quando ti servono. Ma come si creano?
In Python si possono creare dizionari vuoti con il semplice uso di una coppia di parentesi graffe, mentre per posizionarvi all’interno un elemento associato ad una specifica chiave si usano le parentesi quadre.
Vediamo un esempio pratico.
Supponiamo di avere una squadra di calcio in cui ogni giocatore è riconosciuto tramite un numero di maglia che sceglie ad inizio campionato.
Il dato da immagazzinare sarà il nominativo del giocatore, mentre la chiave con cui identificarlo sarà il numero di maglia:
squadra={} squadra[1]='Riccardo Verdi' squadra[12]='Enea Bianchi' squadra[8]='Roberto Neri' squadra[19]='Silvio Arancioni'
Le chiavi sono tutti numeri interi mentre i valori associati sono stringhe.
Se volessimo sapere come si chiama il giocatore con la maglia numero 8, a questo punto, sarà sufficiente richiedere squadra[8] e la stringa ‘Roberto Neri’ verrà prodotta in output.
Le chiavi sono univoche pertanto qualora dovessimo svolgere una nuova assegnazione con la stessa chiave verrebbe sovrascritto il valore ad essa assegnato in precedenza.
Con l’uso di cicli si può percorrere tutto ciò che abbiamo inserito in un dizionario. Infatti, con un normale ciclo for su tale oggetto verranno estratte le sue chiavi.
Il codice:
for chiave in squadra: print(chiave)
percorrerà tutte le chiavi dell’oggetto squadra, inserendole di volta in volta nella variabile chiave e da lì le stamperà:
1 12 8 19
Con il metodo values possiamo percorrere solamente i valori:
for valori in squadra.values(): print(valori)
ed ecco apparire i nomi dei giocatori:
Riccardo Verdi Enea Bianchi Roberto Neri Silvio Arancioni
Con il metodo items otterremo invece tutte le coppie chiave/valore e con un ciclo for le potremo disporre in variabili diverse in questo modo:
for chiave, valore in squadra.items(): print(f'{valore} maglia numero {chiave}')
Grazie a ciò otterremo la stampa dei nomi dei giocatori associati con il loro numero di maglia:
Riccardo Verdi maglia numero 1 Enea Bianchi maglia numero 12 Roberto Neri maglia numero 8 Silvio Arancioni maglia numero 19
Si noti che nel primo ciclo for non è stato necessario in quanto comportamento automatico, ma con il metodo keys possiamo estrarre l’insieme delle chiavi dal dizionario.
Da non dimenticare che i dizionari non sono ordinati pertanto l’estrazione dei valori con un ciclo non garantirà lo stesso ordine di inserimento.
Iscriviti su devACADEMY e SEGUI TUTTI I CORSI che vuoi!
OLTRE 70 CORSI di coding A TUA DISPOSIZIONE con un’unica iscrizione 🙂
I dizionari Python dispongono inoltre di molti altri metodi interessanti.
Ad esempio, con pop possiamo richiedere l’estrazione di uno o più valori. Questo servirà a svolgere due operazioni: prima di tutto offrirà in lettura un elemento e, in seguito, lo rimuoverà dal dizionario.
Con tale tipo di operazione potremo elaborare ogni singolo elemento una sola volta. Questa invocazione, ad esempio, restituirà ‘Riccardo Verdi’ e lo eliminerà dalla squadra:
squadra.pop(1)
Con update si può produrre un aggiornamento del dizionario aggregandogli un altro oggetto dello stesso tipo. Ad esempio, vogliamo arricchire il nostro dizionario con due ulteriori giocatori. Scriveremo allora:
squadra.udpate({25:'Sergio Marroni', 15:'Carmelo Gialli'})
e ancora:
for chiave, valore in squadra.items(): print(f'{valore} maglia numero {chiave}')
per ottenere stampato questo:
Enea Bianchi maglia numero 12 Roberto Neri maglia numero 8 Silvio Arancioni maglia numero 19 Sergio Marroni maglia numero 25 Carmelo Gialli maglia numero 15
(Da notare che manca Riccardo Verdi dalla lista in quanto estromesso poco prima con il pop).
Infine, potremo svuotare un dizionario del suo contenuto con:
squadra.clear()
e da questo momento in poi la nostra struttura dati sarà vuota.
In conclusione, i molti metodi e la duttilità di questa struttura permetteranno di asservirla a tantissimi scopi nei nostri programmi.