Dizionari
Dizionari¶
Obiettivi della Lezione¶
Al termine di questa lezione sarai in grado di:
- Comprendere cosa sono i dizionari in Python e la loro utilità.
- Creare e inizializzare dizionari.
- Accedere, modificare e rimuovere elementi in un dizionario.
- Iterare attraverso le chiavi, i valori e gli elementi di un dizionario.
- Utilizzare i metodi principali associati ai dizionari.
Introduzione¶
I dizionari sono una delle strutture dati più potenti e versatili in Python. Consentono di memorizzare dati in coppie chiave-valore, offrendo un modo efficiente per recuperare informazioni basate su una chiave univoca. A differenza delle liste, che utilizzano indici numerici, i dizionari utilizzano chiavi immutabili per accedere ai loro valori, rendendoli ideali per rappresentare oggetti e dati strutturati.
Spiegazione Teorica¶
Cos’è un Dizionario?¶
Un dizionario è una collezione non ordinata, modificabile e indicizzata di elementi. Ogni elemento in un dizionario è composto da una chiave e un valore. Le chiavi devono essere di un tipo di dato immutabile (come stringhe, numeri o tuple), mentre i valori possono essere di qualsiasi tipo.
Creazione di un Dizionario¶
Puoi creare un dizionario utilizzando le parentesi graffe {}
o la funzione dict()
.
# Dizionario vuoto
dizionario_vuoto = {}
# Dizionario con dati iniziali
dizionario = {
'nome': 'Alice',
'età': 25,
'città': 'Roma'
}
# Utilizzando la funzione dict()
dizionario_alternativo = dict(nome='Bob', età=30, città='Milano')
Accesso ai Valori¶
Per accedere al valore associato a una chiave, utilizzi le parentesi quadre []
o il metodo .get()
.
# Usando le parentesi quadre
nome = dizionario['nome'] # 'Alice'
# Usando il metodo get()
età = dizionario.get('età') # 25
Nota: Se si tenta di accedere a una chiave inesistente usando
[]
, otterrai un erroreKeyError
. Con.get()
, otterraiNone
o un valore predefinito specificato.
Modifica e Aggiunta di Elementi¶
Puoi modificare il valore di una chiave esistente o aggiungere una nuova coppia chiave-valore.
# Modifica del valore esistente
dizionario['età'] = 26
# Aggiunta di una nuova coppia chiave-valore
dizionario['professione'] = 'Ingegnere'
Rimozione di Elementi¶
Esistono diversi metodi per rimuovere elementi da un dizionario:
pop(key)
: Rimuove la chiave specificata e restituisce il valore.popitem()
: Rimuove e restituisce l’ultima coppia chiave-valore inserita.del
: Rimuove l’elemento con la chiave specificata.clear()
: Rimuove tutti gli elementi dal dizionario.
# Usando pop()
professione = dizionario.pop('professione') # 'Ingegnere'
# Usando del
del dizionario['città']
# Usando clear()
dizionario.clear() # Dizionario vuoto
Iterazione attraverso un Dizionario¶
Puoi iterare sulle chiavi, sui valori o su entrambi:
dizionario = {'nome': 'Alice', 'età': 26, 'città': 'Roma'}
# Iterare sulle chiavi
for chiave in dizionario:
print(chiave)
# Iterare sui valori
for valore in dizionario.values():
print(valore)
# Iterare sulle coppie chiave-valore
for chiave, valore in dizionario.items():
print(f"{chiave}: {valore}")
nome età città Alice 26 Roma nome: Alice età: 26 città: Roma
Metodi Utili dei Dizionari¶
keys()
: Restituisce una lista delle chiavi.values()
: Restituisce una lista dei valori.items()
: Restituisce una lista di tuple (chiave, valore).update()
: Aggiorna il dizionario con le coppie chiave-valore di un altro dizionario.copy()
: Restituisce una copia superficiale del dizionario.
# Creazione di un dizionario
studente = {
'nome': 'Carlo',
'età': 21,
'corsi': ['Matematica', 'Fisica']
}
# Accesso ai valori
print(studente['nome']) # Output: Carlo
print(studente.get('età')) # Output: 21
# Modifica di un valore
studente['età'] = 22
# Aggiunta di una nuova chiave
studente['università'] = 'Sapienza'
# Rimozione di una chiave
del studente['corsi']
# Iterazione
for chiave, valore in studente.items():
print(f"{chiave}: {valore}")
Carlo 21 nome: Carlo età: 22 università: Sapienza
Spiegazione:
- Creiamo un dizionario
studente
con informazioni personali. - Modifichiamo l’età.
- Aggiungiamo l’università frequentata.
- Rimuoviamo la lista dei corsi.
- Iteriamo sul dizionario per stampare le informazioni aggiornate.
Esempio 2: Contare la Frequenza degli Elementi¶
# Lista di elementi
frutta = ['mela', 'banana', 'arancia', 'mela', 'banana', 'mela']
# Dizionario per il conteggio
conteggio_frutta = {}
for frutto in frutta:
if frutto in conteggio_frutta:
conteggio_frutta[frutto] += 1
else:
conteggio_frutta[frutto] = 1
print(conteggio_frutta) # Output: {'mela': 3, 'banana': 2, 'arancia': 1}
{'mela': 3, 'banana': 2, 'arancia': 1}
Spiegazione:
- Creiamo una lista di frutta con elementi ripetuti.
- Utilizziamo un dizionario
conteggio_frutta
per contare quante volte appare ogni frutto. - Incrementiamo il conteggio ogni volta che troviamo lo stesso frutto nella lista.
Esercizi Interattivi¶
Esercizio 1: Glossario di Termini¶
Crea un dizionario chiamato glossario
che contenga almeno 5 termini di programmazione come chiavi e le loro definizioni come valori. Scrivi un ciclo che stampi ogni parola seguita dalla sua definizione.
Suggerimento:
- Utilizza il metodo
items()
per ottenere le coppie chiave-valore. - Formatta l’output per renderlo leggibile.
Esercizio 2: Traduttore Semplice¶
Crea un programma che funzioni come un semplice traduttore italiano-inglese. Definisci un dizionario con parole in italiano come chiavi e le corrispondenti traduzioni in inglese come valori. Il programma dovrebbe chiedere all’utente una parola in italiano e restituire la traduzione in inglese.
Suggerimento:
- Usa la funzione
input()
per ottenere la parola dall’utente. - Gestisci il caso in cui la parola non sia presente nel dizionario.
Buone Pratiche e Consigli¶
- Scelta delle Chiavi: Utilizza chiavi immutabili come stringhe o numeri. Evita di usare liste o altri dizionari come chiavi.
Evitare Errori di Chiave: Quando accedi a una chiave che potrebbe non esistere, usa il metodo
.get()
con un valore di default per evitare eccezioni.valore = dizionario.get('chiave', 'Valore predefinito')
Comprensioni di Dizionari: Puoi creare dizionari in modo efficiente utilizzando le comprensioni.
quadrati = {x: x*x for x in range(1, 6)} # Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Evitare la Modifica durante l’Iterazione: Non modificare il dizionario (aggiungendo o rimuovendo elementi) mentre lo stai iterando.
Utilizzo di
defaultdict
: Per conteggi o aggregazioni, considera l’uso didefaultdict
dal modulocollections
.from collections import defaultdict conteggio = defaultdict(int)
Conclusione¶
I dizionari sono fondamentali per la gestione di dati complessi in Python. Permettono un accesso rapido ai valori tramite chiavi significative, facilitando la scrittura di codice leggibile ed efficiente. Praticare con i dizionari ti aiuterà a comprendere meglio le loro potenzialità e a utilizzarli efficacemente nei tuoi programmi.
Risorse Aggiuntive¶
- Documentazione Ufficiale Python: Dictionaries
- Libro Consigliato: Python Crash Course di Eric Matthes
- Video Tutorial: Dictionaries – Working with Key-Value Pairs