web-dev-qa-db-fra.com

Hachage de tableaux dans Python

Est-il possible de hacher lists?

Par exemple, je sais que les hachages de tuples sont possibles:

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

Mais est-il possible de hacher un list?

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

Solution possible:

Explication très approfondie du hachage des listes, ici.

41
enginefree

Essayez-le:

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

Vous pouvez donc obtenir hash de Tuple et frozenset puisque les sont immuables, et vous ne pouvez pas le faire pour list et set car ils sont mutables.

48
Roman Bodnarchuk

Si vous avez vraiment besoin d'utiliser une liste comme clé de dictionnaire, essayez d'abord de la convertir en chaîne.
my_list = str(my_list)

13
Uila

Python ne vous permet pas d'utiliser des données mutables comme clés dans les dictionnaires, car les modifications après l'insertion rendraient l'objet introuvable. Vous pouvez utiliser des tuples comme clés.

8
Ned Batchelder