[Python] Dubbi su hash e set

enrico franchi enrico.franchi a gmail.com
Sab 3 Maggio 2008 09:32:46 CEST


On Fri, May 2, 2008 at 8:46 PM, Pietro Battiston <toobaz a email.it> wrote:

>  Ora, la mia coscienza sporca mi suggerisce che forse quando ho
>  sovrascritto __hash__ ho fatto più di quanto dovrebbe fare uno che di
>  internal Python non ne sa abbastanza, e che le hash di tutti gli
>  oggetti che conosco sono (solitamente) univoche. Ma...

Non è questione di internals. E' questione di algoritmi. Devi definire
una funzione (quasi) univoca sugli oggetti che a te interessano.
La proprietà è che se hash(x) == hash(y) per te x e y devono essere
uguali e che possibilmente se devono essere diversi non abbiano lo
stesso hash (che vuole dire "è estremamente poco probabile che...").

>  "not necessarily true" non significa che dovrebbe alla fine fregarsene
>  se in un insieme due elementi distinti (e peraltro identici in tutto
>  tranne l'allocazione di memoria) hanno la stessa hash?!

Dice chiaramente: due valori con lo stesso valore hanno anche lo stesso hash,
due valori con diverso hash potrebbero avere lo stesso valore (o anche
no). E' frequente: per esempio se crei una classe "vuota" tutte le sue
istanze avranno lo stesso hash (se la prova non mi inganna).

>  Qualcunque schiarimento è graditissimo, scusate la chilometricità
>  della mail.

Io tutt'ora non ho capito quale sia il tuo problema.




-- 
-enrico


Maggiori informazioni sulla lista Python