Dizionari Python: Accedere agli Elementi
Impara tutti i modi per accedere agli elementi di un dizionario Python: notazione a parentesi, get(), keys(), values(), items(), verifica di appartenenza e accesso a dizionari annidati.
I dizionari Python memorizzano i dati come coppie chiave-valore. Sapere come recuperare quei valori — e cosa succede quando una chiave è mancante — è il fondamento del lavoro con qualsiasi dizionario. Questo capitolo copre ogni tecnica di accesso standard: la notazione a parentesi quadre, il metodo .get(), l'iterazione con .keys(), .values() e .items(), e la verifica di appartenenza con in.
Notazione a Parentesi Quadre
Il modo più diretto per recuperare un valore è scrivere il nome del dizionario seguito dalla chiave tra parentesi quadre.
Accedere al valore di un dizionario tramite chiave
Python cerca 'Bob' nella tabella hash e restituisce il suo valore in tempo O(1), indipendentemente dal numero di chiavi presenti nel dizionario.
KeyError quando la chiave è mancante
Se la chiave non esiste, Python solleva un KeyError e interrompe l'esecuzione.
ages = {'Alice': 27, 'Bob': 34, 'Charlie': 45}
print(ages['Dave']) # KeyError: 'Dave'Gestisci sempre questo caso — o verificando prima l'appartenenza (vedi la sezione sull'operatore in qui sotto) o usando .get() al suo posto.
Il Metodo .get()
.get(key) restituisce il valore per key se esiste, e None altrimenti — nessuna eccezione viene sollevata.
Usare .get() per accedere in modo sicuro a una chiave del dizionario
Fornire un valore predefinito
Passa un secondo argomento a .get() per ricevere un valore di fallback al posto di None:
colors = {'apple': 'red', 'banana': 'yellow', 'grape': 'purple'}
color = colors.get('orange', 'unknown')
print(color) # unknownQuesto è il modo idiomatico per accedere a una chiave che potrebbe essere presente o meno senza dover racchiudere il codice in un blocco try/except.
Verifica di Appartenenza con in
Usa l'operatore in per verificare se una chiave esiste prima di accedervi:
ages = {'Alice': 27, 'Bob': 34, 'Charlie': 45}
if 'Alice' in ages:
print(ages['Alice']) # 27
print('Dave' in ages) # False
print('Bob' in ages) # Truein verifica solo le chiavi, non i valori. Viene eseguito in tempo O(1) perché i dizionari sono basati su hash.
Accedere a Tutte le Chiavi, i Valori e gli Elementi
I dizionari Python espongono tre oggetti vista che permettono di iterare o ispezionare il loro contenuto senza costruire una lista separata.
.keys() — tutte le chiavi
colors = {'apple': 'red', 'banana': 'yellow', 'grape': 'purple'}
print(colors.keys())
# dict_keys(['apple', 'banana', 'grape'])
for fruit in colors.keys():
print(fruit)
# apple
# banana
# grape.values() — tutti i valori
colors = {'apple': 'red', 'banana': 'yellow', 'grape': 'purple'}
print(colors.values())
# dict_values(['red', 'yellow', 'purple'])
for color in colors.values():
print(color)
# red
# yellow
# purple.items() — coppie chiave-valore
.items() restituisce ogni voce come una tupla (key, value). L'unpacking delle tuple rende questa la vista più utile per la maggior parte dei compiti di iterazione:
colors = {'apple': 'red', 'banana': 'yellow', 'grape': 'purple'}
for fruit, color in colors.items():
print(f'{fruit} is {color}')
# apple is red
# banana is yellow
# grape is purpleGli oggetti vista sono dinamici — riflettono lo stato attuale del dizionario. Se aggiungi o rimuovi una chiave dopo aver creato una vista, la vista si aggiorna automaticamente.
Accedere agli Elementi in un Dizionario Annidato
Quando il valore di un dizionario è a sua volta un dizionario, concatena le parentesi quadre (o le chiamate a .get()) per raggiungere il valore interno.
Accedere ai valori in un dizionario annidato
Per un accesso più sicuro attraverso più livelli, concatena le chiamate a .get():
title = library.get('book4', {}).get('title', 'Not found')
print(title) # Not foundConsulta il capitolo sui Dizionari Annidati per un trattamento più approfondito delle strutture dati a più livelli.
Scegliere il Metodo di Accesso Giusto
| Situazione | Approccio consigliato |
|---|---|
| La chiave è garantita di esistere | d[key] — chiaro e veloce |
La chiave potrebbe mancare, None va bene | d.get(key) |
| La chiave potrebbe mancare, serve un fallback | d.get(key, default) |
| Verificare prima di accedere | if key in d: d[key] |
| Iterare su tutte le voci | for k, v in d.items() |
Cosa Viene Dopo
Una volta che riesci a leggere i valori da un dizionario, i passi successivi naturali sono:
- Aggiungere Elementi — inserire nuove coppie chiave-valore
- Modificare Elementi — aggiornare i valori esistenti
- Cicli sui Dizionari — schemi di iterazione in profondità
- Metodi del Dizionario — il riferimento completo ai metodi