I Dizionari in Phyton

Scritto da ambrix on . Postato in Corsi Programmazione, NotInHome

logo python ambrix.net

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

Per Richieste, Avvisi e Lasciti Ereditari

Disclaimer

I contenuti di questo Blog (testi, immagini, foto, etc.) sono di mia creazione, tranne nei casi dove espressamente indicato.