Dizionari Python: struttura e mappe hash

Dizionari principali di Python. Impara a archiviare, recuperare e gestire i dati delle coppie chiave-valore. Comprendere le prestazioni e le best practice per le mappature.

Prova nell'editor

Panoramica

I dizionari sono probabilmente la struttura dati più importante e ottimizzata in Python. Un dizionario è una raccolta modificabile di valori di dati archiviati in coppie "chiave:valore". Se immagini un dizionario del mondo reale, la "chiave" è la parola che stai cercando e il "valore" è la definizione. Questa struttura di abbinamento rende incredibilmente efficiente il recupero, l'aggiornamento e la gestione dei dati relazionali.

Sotto il cofano, i dizionari Python sono implementati come tabelle Hash (o mappe Hash) altamente ottimizzate. Ciò implica che il recupero di un valore tramite la sua chiave è un'operazione a tempo costante "O(1)". Sia che il tuo dizionario contenga dieci elementi o dieci milioni di elementi, Python può saltare istantaneamente direttamente all'indirizzo di memoria del valore senza dover scansionare l'intera raccolta.

Per definire un dizionario, si utilizzano le parentesi graffe `{}` con chiavi e valori separati dai due punti `:`. Le chiavi devono essere di tipo immutabile (come stringhe, numeri interi o tuple), il che significa che non è possibile utilizzare un elenco come chiave di dizionario. I valori, tuttavia, possono essere assolutamente qualsiasi cosa, inclusi elenchi, oggetti o persino dizionari profondamente annidati, rendendoli perfetti per rappresentare strutture dati simili a JSON.

L'accesso ai valori avviene utilizzando la notazione tra parentesi (ad esempio, `utente["nome"]`). Tuttavia, se la chiave non esiste, questo approccio genera un `KeyError`, interrompendo immediatamente l'esecuzione del programma. Per scrivere codice più sicuro, i professionisti utilizzano il metodo `.get()` (ad esempio, `user.get("name")`), che restituisce "None" o un valore predefinito personalizzato se manca la chiave, evitando arresti anomali non necessari.

Storicamente, i dizionari Python erano completamente disordinati. Tuttavia, a partire dalPython 3.7, è ufficialmente garantito che i dizionari mantengano l'ordine di inserimento. Ciò significa che quando si esegue l'iterazione su un dizionario utilizzando metodi come `.keys()`, `.values()` o `.items()`, gli elementi verranno restituiti nell'esatta sequenza in cui sono stati originariamente aggiunti al dizionario, combinando la velocità delle mappe hash con la prevedibilità degli elenchi.

Codice e output di esecuzione

Creazione di un profilo di configurazione utente utilizzando in modo intensivo coppie chiave-valore nidificate.

user = {
    "username": "coder123",
    "role": "admin",
    "active": True
}

user["last_login"] = "2026-04-10" # Adding a key
print(f"Username is {user['username']}")

# Iterating over key-value pairs
for key, value in user.items():
    print(f"{key}: {value}")
Uscita terminale
Username is coder123
username: coder123
role: admin
active: True
last_login: 2026-04-10

Implementazione passo dopo passo

  • Gestione delle risposte JSON dalle API REST
  • Mappatura di ID univoci su oggetti dati di grandi dimensioni
  • Memorizzazione dei parametri di configurazione dell'applicazione

Domande frequenti

Cosa succede se provo ad accedere ad una chiave che non esiste?

L'uso della notazione tra parentesi (utente["nome"]) genera un KeyError. Utilizzare invece user.get("name") per restituire None senza lanciare eccezioni.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.