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:
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.
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)
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.