web-dev-qa-db-ja.com

配列のハッシュPython

listsをハッシュすることは可能ですか?

たとえば、タプルのハッシュが可能であることを知っています。

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

しかし、listをハッシュすることは可能ですか?

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

考えられる解決策:

リストのハッシュの詳細な説明、こちら

41
enginefree

やってみなよ:

>>> 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'

したがって、hashTuplefrozensetは不変であるため、listsetに対してはできません。可変だからです。

48

リストを辞書キーとして本当に使用する必要がある場合は、最初にリストを文字列に変換してみてください。
my_list = str(my_list)

13
Uila

Pythonでは、変更可能なデータを辞書のキーとして使用することはできません。挿入後に変更すると、オブジェクトが検索不能になるためです。タプルをキーとして使用できます。

8
Ned Batchelder