开发者

Hashing arrays in Python

开发者 https://www.devze.com 2023-03-27 16:02 出处:网络
Is it开发者_Python百科 possible to hash lists? For example, I know that hashes of tuples are possible:

Is it开发者_Python百科 possible to hash lists?

For example, I know that hashes of tuples are possible:

>>> hash((1,2,3,4,5,6))
-319527650

But is it possible to hash a list?

>>> hash([1,2,3,4,5,6])
hash_value

Possible Solution:

Very in depth explanation to the hashing of lists, here.


Just try it:

>>> hash((1,2,3))
2528502973977326415
>>> hash([1,2,3])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> hash(frozenset((1,2,3)))
-7699079583225461316
>>> hash(set((1,2,3)))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'

So you can get hash of tuple and frozenset since the are immutable, and you can't do it for list and set because they are mutable.


If you really need to use a list as a dictionary key, try converting it to a string first.
my_list = str(my_list)


Python doesn't allow you to use mutable data as keys in dictionaries, because changes after insertion would make the object un-findable. You can use tuples as keys.


First you have to convert it to a tuple:

print(hash(tuple([1, 2, 3, 4, 5, 6])))
0

精彩评论

暂无评论...
验证码 换一张
取 消