Sto lavorando con insiemi di matrici di interi, e ho pensato rappresentandoli come tuple aveva senso, in quanto sono lavabili. Tuttavia la funzione di hash() mi ha dato strani risultati per le tuple:hashing diverse tuple in python danno risultati identici
hash(((1, -1, 0), (1, 0, 0), (1, 0, -1)))
Out[147]: -697649482279922733
hash(((1, 0, -1), (1, 0, 0), (1, -1, 0)))
Out[148]: -697649482279922733
Come si può vedere, questi due tuple differenti hanno lo stesso valore di hash. Si noti che sono in realtà abbastanza simili (scambio del primo e dell'ultimo sottotitolo), tuttavia non sono riuscito a trovare un esempio più minimale: ((0,1),(0,0))
e ((0,0),(0,1))
hanno valori di hash diversi, ad esempio.
Qualsiasi indizio di cosa sta succedendo? Non posso credere che sia solo una sfortuna ... Ora che ho trovato il problema è che potrei aggirarlo facilmente, ma ho pensato che valesse la pena parlarne qui comunque.
Si sta avendo una sfortuna incredibile. –
Perché ciò dovrebbe causare problemi? – Caramiriel
Sebbene io sia d'accordo con te in caso di sfortuna, le funzioni di hash non sono di solito bidirezionali (a parte "l'hashing perfetto"), e questo normalmente non dovrebbe essere un problema, come sottolineato da @Caramiriel. – tomasyany