Hashing arrays in Python

前端 未结 3 1616
难免孤独
难免孤独 2020-12-05 09:08

Is it possible to hash lists?

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

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


        
相关标签:
3条回答
  • 2020-12-05 09:46

    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.

    0 讨论(0)
  • 2020-12-05 09:56

    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.

    0 讨论(0)
  • 2020-12-05 10:12

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

    0 讨论(0)
提交回复
热议问题