Parliamo

project-cherry.dev

Fondamenta10 min

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.

python
# 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.

python
# 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.

python
# 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.

python
# 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() con key=lambda ordina 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