Est-il sécuritaire d'utiliser ensemble figé comme Dict clé?
Il fonctionne évidemment, mais il y a des cas où les deux ensembles de même possible d'ajouter deux entrées dans les Dict? Je suppose que je suis cette condition antérieure et changé mon code de frozenset(...)
à tuple(sorted(frozenset(...)))
. Peut quelqu'un qui sait comment Dict et frozenset de mise en œuvre de confirmer si c'est nécessaire ou pas?
- Qu'est ce que c'est prévu pour. Si vous avez un exemple qui provoque des problèmes, s'il vous plaît poster.
Vous devez vous connecter pour publier un commentaire.
Pas.
frozenset
algorithme de hachage ne dépend pas de l'ordre des éléments, uniquement sur les éléments eux-mêmes. Deux FS es avec les mêmes éléments sont égaux et ont les mêmes tables de hachage, ainsi satisfaire à deux critères de "dict identité", en d'autres termes, ils sont de la même dict clés:Est-il sécuritaire d'utiliser un
frozenset
comme undict
clé? Oui.Selon les docs, Frozenset est hashable parce qu'il est immuable. Cela impliquerait qu'il peut être utilisé comme la clé d'une dict, parce que la condition préalable pour une touche c'est qu'il est hashable.
De la FrozenSet docs
Et de manière redondante, à partir de la Dictionnaire docs:
De clarifier, d'un ensemble (par définition), congelés ou non, n'est pas de préserver l'ordre. Ils sont stockés à l'intérieur avec afin de ne pas prendre en compte et de dupliquer des éléments supprimés, donc deux ensembles construits dans les différents ordres serait l'équivalent clés dans un dictionnaire – ils sont les mêmes.
et de la même manière,
tuple(sorted(frozenset(...)))
est nécessaire. Ce n'est pas une question de hashability ou de la commande, une question de la valeur de hachage.de les docs officielles
(L'emphase est mienne)