Quando si lavora con collezioni di elementi, come una lista di stringhe o una lista di tuple, ricercare un elemento o rispondere a domande del tipo “L’elemento X è presente nella nostra collezione?” può diventare molto dispendioso dal punto di vista computazionale. Confrontare numeri, invece, è estremamente veloce, e i nostri computer sono progettati per effettuare confronti numerici in modo molto efficiente (a differenza di stringhe o tuple). Per questo, se riusciamo a mappare i dati in un valore numerico, alcune operazioni (come trovarne l’occorrenza o verificarne la presenza) risultano più rapide.
La tecnica di mappare dati di dimensioni arbitrarie a dati di dimensione fissa si chiama hashing. Il numero risultante (hash) funge da identificatore univoco per i dati originali. Di solito, disponiamo di una funzione hash in grado di mappare i dati iniziali a un valore di dimensione fissa (per esempio, un numero).
In Python, ad esempio, esiste la funzione integrata hash, che può mappare qualsiasi oggetto immutabile a un numero, in genere compreso nell’intervallo . È importante notare che può essere applicata solo a oggetti immutabili. Cercare di calcolare l’hash di una lista o di un dizionario (che sono mutabili e possono essere modificati aggiungendo o rimuovendo elementi) genererebbe infatti un errore: