I Dizionari in Phyton

Lezione#09 Benvenuti alla nona lezione del corso Python in 11 passi: analizziamo i Dizionari.
Come già accennato nella lezione dedicata alle Liste, i dizionari in Python sono raccolte di dati modificabili e non ordinate. Inoltre un Dizionario non consente elementi duplicati e in luogo degli indici utilizza le keys (chiavi) per selezionare (puntare) un valore.
# script_901.py numbs = {"one": "uno", "two": "due"} print(numbs)
{‘one’: ‘uno’, ‘two’: ‘due’}
Dal primo script è evidente che i dizionari (dict) contengono elementi (items) formati da una chiave (key) e un valore (value). Una volta che il dizionario è creato, si hanno coppie (key, value), quindi si può usare la chiave (che deve essere univoca) per ottenere il valore corrispondente.
Diversamente da come accade in liste e tuple, le chiavi possono essere di qualsiasi tipo:
# script_902.py numbs = {"one": "uno", "two": "due"} numbs[3] = "tre" numbs[True] = "quattro" print(numbs)
{‘one’: ‘uno’, ‘two’: ‘due’, 3: ‘tre’, True: ‘quattro’}
Nell’esempio #902 abbiamo usato anche un booleano come chiave. Si noti come viene ampliato il dizionario: numbs[ … ] permette di aggiungere una chiave a cui verrà assegnato un valore.
Vediamo come accedere ad un valore del dizionario.
# script_903.py tactics = {'def': 'quattro', 'mid': 'tre', 'forw': 'tre'} print(tactics["def"]) print(tactics["mid"]) print(tactics["forw"])
quattro
tre
tre
Tutto perfetto! Ma come facciamo a sapere o a ricordarci tutte le chiavi utilizzate in un dizionario? Vediamolo nel seguente esempio.
# script_904.py tactics = {'def': '5-4-1', 'mid': '4-4-2', 'forw': '4-3-3', 'att': '4-2-4', 'fant': '4-3-1-2', 'xmas': '4-3-2-1'} print(tactics.keys())
dict_keys([‘def’, ‘mid’, ‘forw’, ‘att’, ‘fant’, ‘xmas’])
Essendo un dizionario, non ordinato, l’ordine in cui viene restituita la lista di chiavi, è puramente casuale!
WoW! Stiamo pensando tutti ad un soccer game? Con keys() riusciamo ad avere a disposizione tutte le chiavi di uno specifico dizionario. Tuttavia, potremmo chiederci se una chiave è presente o meno in un dizionario. In questo caso useremo in come keyword.
# script_905.py tactics = {'def': '5-4-1', 'mid': '4-4-2', 'forw': '4-3-3', 'att': '4-2-4', 'fant': '4-3-1-2', 'xmas': '4-3-2-1'} print('xmas' in tactics)
True
In output abbiamo True perché il valore ricercato è presente nel dizionario. Altrimenti, avremmo ricevuto False. E se volessimo sapere anche la lunghezza del dizionario?
# script_906.py tactics = {'def': '5-4-1', 'mid': '4-4-2', 'forw': '4-3-3', 'att': '4-2-4', 'fant': '4-3-1-2', 'xmas': '4-3-2-1'} print(len(tactics))
6
Il metodo len() è sempre pronto a darci il risultato desiderato. Assodato che possiamo ricavare facilmente la lunghezza di un dizionario, vediamo come aggiungere, rimuovere o cambiare un valore.
# script_907.py tactics = {'def': '5-4-1', 'mid': '4-4-2', 'forw': '4-3-3', 'att': '4-2-4', 'fant': '4-3-1-2', 'xmas': '4-3-2-1'} tactics.update{"panz": "3-5-2"} print(tactics)
{‘def’: ‘5-4-1’, ‘mid’: ‘4-4-2’, ‘forw’: ‘4-3-3’, ‘att’: ‘4-2-4’, ‘fant’: ‘4-3-1-2’, ‘xmas’: ‘4-3-2-1’, ‘panz’: ‘3-5-2’}
Ottimo lavoro! Abbiamo appena aggiunto un altro modulo (il famoso 3-5-2 della Germania Ovest degli anni ’90) per le nostre squadre di calcio. Possiamo anche aggiungere più di un una coppia chiave-valore, utilizzando la virgola come separatore e il metodo update() per aggiornare.
# script_908.py tactics = {'def': '5-4-1', 'mid': '4-4-2', 'forw': '4-3-3', 'att': '4-2-4', 'fant': '4-3-1-2', 'xmas': '4-3-2-1'} away = tactics.pop('mid') print(away)
4-4-2
Benissimo, fuori casa utilizzeremo il modulo 4-4-2. Usando il metodo pop() rimuoviamo un elemento dal dizionario. Siamo quasi arrivati alla fine della lezione, facciamo quindi un esempio riepilogativo.
# script_908.py player = {'name': 'Shingo', 'surname': "Tamai", 'age': 18, 'height': 1.79} player.pop('height') player.update({'specials': 'air_bycicle'}) print(player)
{‘name’: ‘Shingo’, ‘surname’: ‘Tamai’, ‘age’: 18, ‘specials’: ‘air_bycicle’}
Lezione precedente <– []–> Lezione successiva