Tôi đang làm việc với các bộ ma trận nguyên, và tôi nghĩ rằng chúng đại diện cho chúng như các bộ dữ liệu có ý nghĩa, vì chúng có thể băm. Tuy nhiên hàm băm() cho tôi kết quả lạ đối với bộ dữ liệu:băm nhỏ các tuple khác nhau trong python cho kết quả giống hệt nhau
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
Như bạn có thể thấy, hai bộ khác nhau này có cùng giá trị băm. Lưu ý rằng chúng thực sự khá giống nhau (trao đổi các subtup đầu tiên và cuối cùng), tuy nhiên tôi không thể tìm thấy một ví dụ tối thiểu hơn: ((0,1),(0,0))
và ((0,0),(0,1))
có các giá trị băm khác nhau chẳng hạn.
Bất kỳ đầu mối nào về những gì đang xảy ra? Tôi không thể tin rằng nó chỉ là may mắn vô cùng tồi tệ ... Bây giờ tôi đã tìm thấy nơi mà vấn đề là tôi có thể bỏ qua nó một cách dễ dàng, nhưng tôi nghĩ rằng nó là đáng nói đến ở đây anyway.
Bạn đang gặp may mắn không may. –
Tại sao điều này lại gây ra bất kỳ vấn đề gì? – Caramiriel
Mặc dù tôi đồng ý rằng bạn có may mắn, hàm băm thường không có tính từ bi (ngoài "băm" hoàn hảo), và điều đó thường không phải là vấn đề như được chỉ ra bởi @Caramiriel. – tomasyany