I found out some interesting details about hashing in Python.
An object is hashable if it has `__hash__()`, that has hash value that never changes.
Immutable data, or even mutable data that is guaranteed to no change, has hash available.
An object is hashable if it has `__hash__()`, that has hash value that never changes.
Immutable data, or even mutable data that is guaranteed to no change, has hash available.
Hashable types:
These are commonly hashable in Python, int, float, complex, str, bytes, bytearray, tuples (if elements are hashable), frozenset (immutable, so data is constant, therefore hashable), or any object that has `__hash__` and `__eq__`.
Non hashable types:
`list`, `dict`, `set` because their data can change (behind a pointer), most mutable objects.