Liste e Dizionari
Gestisci la rubrica clienti e l'archivio pratiche dello studio legale dell'Avv. Rossi con liste e dizionari — le strutture dati fondamentali di Python.
Liste e Dizionari
Lo studio legale dell'Avv. Marco Rossi gestisce decine di clienti e pratiche. Servono strutture dati per organizzare queste informazioni: le liste per collezioni ordinate, i dizionari per dati strutturati con chiavi. Sono le due strutture che userai di più in Python.
Liste — rubrica clienti dello studio
Una lista è una collezione ordinata e modificabile. Perfetta per la rubrica dei clienti dello studio, dove l'ordine conta e i dati cambiano spesso.
# Rubrica clienti dello studio
lista_clienti = ["Verdi Giovanni", "Neri Laura", "Russo Paolo"]
# Aggiungere un nuovo cliente
lista_clienti.append("Marino Angela")
# Inserire in una posizione specifica
lista_clienti.insert(0, "Esposito Franco")
# Accesso per posizione
primo_cliente = lista_clienti[0] # Esposito Franco
ultimo_cliente = lista_clienti[-1] # Marino Angela
# Quanti clienti ha lo studio
print(f"Clienti totali: {len(lista_clienti)}")
# Controllare se un cliente esiste
if "Neri Laura" in lista_clienti:
print("Cliente trovata in rubrica")Dizionari — scheda completa di un cliente
Un dizionario associa chiavi a valori — perfetto per rappresentare una scheda anagrafica completa, dove ogni campo ha un nome.
# Scheda di un cliente dello studio
cliente = {
"nome": "Giovanni",
"cognome": "Verdi",
"codice_fiscale": "VRDGNN85M01H501Z",
"tipo": "persona_fisica",
"telefono": "333-1234567",
"pratica_aperta": True
}
# Accesso ai dati
print(f"Cliente: {cliente['nome']} {cliente['cognome']}")
print(f"CF: {cliente['codice_fiscale']}")
# Aggiungere un campo
cliente["email"] = "g.verdi@email.it"
# Accesso sicuro con .get() — evita errori se la chiave non esiste
indirizzo = cliente.get("indirizzo", "Non specificato")
print(f"Indirizzo: {indirizzo}")Liste di dizionari — archivio pratiche
La combinazione più potente: una lista di dizionari. Ogni elemento della lista è una pratica completa con tutti i suoi campi.
# Archivio pratiche dello studio
pratiche = [
{
"numero": "2024-001",
"cliente": "Verdi Giovanni",
"tipo": "civile",
"importo": 5000.00,
"stato": "aperta"
},
{
"numero": "2024-002",
"cliente": "Neri Laura",
"tipo": "penale",
"importo": 8000.00,
"stato": "chiusa"
},
{
"numero": "2024-003",
"cliente": "Russo Paolo",
"tipo": "civile",
"importo": 3500.00,
"stato": "aperta"
}
]
# Quante pratiche in archivio
print(f"Pratiche totali: {len(pratiche)}")
# Scorrere tutte le pratiche aperte
for pratica in pratiche:
if pratica["stato"] == "aperta":
print(f"Pratica {pratica['numero']}: {pratica['cliente']} - {pratica['importo']:.2f} EUR")Metodi utili — sorted, filter, .get()
Python offre strumenti potenti per lavorare con queste strutture senza scrivere cicli complessi.
# Ordinare le pratiche per importo (dalla più alta)
pratiche_ordinate = sorted(pratiche, key=lambda p: p["importo"], reverse=True)
for p in pratiche_ordinate:
print(f"{p['numero']}: {p['importo']:.2f} EUR")
# Filtrare solo le pratiche civili
pratiche_civili = list(filter(lambda p: p["tipo"] == "civile", pratiche))
print(f"Pratiche civili: {len(pratiche_civili)}")
# Calcolare il fatturato totale
fatturato = sum(p["importo"] for p in pratiche)
print(f"Fatturato totale: {fatturato:.2f} EUR")Da ricordare
- ●Le liste sono collezioni ordinate: usa
append(),insert(), accesso con indice[0]e[-1] - ●I dizionari mappano chiavi a valori: usa
.get()per accesso sicuro senza rischio di errore - ●Le liste di dizionari sono il modo standard per gestire archivi di record strutturati
- ●
sorted()conkey=lambdaordina qualsiasi collezione per un criterio a scelta - ●
filter()seleziona elementi che soddisfano una condizione - ●Questo schema — dizionario con chiavi
"nome","cognome","codice_fiscale","tipo"— è la base su cui costruirai le classi nella prossima lezione