105 votes

Pourquoi la fonction dict.keys() de Python renvoie-t-elle une liste et non un ensemble ?

Je me serais attendu à ce que la méthode keys de Python renvoie un ensemble au lieu d'une liste. Puisque cela ressemble le plus au type de garanties que les clés d'un hashmap donneraient. Plus précisément, elles sont uniques et non triées, comme un ensemble. Cependant, cette méthode renvoie une liste :

>>> d = {}
>>> d.keys().__class__
<type 'list'>

S'agit-il simplement d'une erreur dans l'API Python ou y a-t-il une autre raison qui m'échappe ?

119voto

NPE Points 169956

L'une des raisons est que dict.keys() est antérieure à l'introduction des ensembles dans la langue.

Notez que le type de retour de dict.keys() a changé dans Python 3 : la fonction renvoie maintenant un "set-like". voir plutôt qu'une liste.

Pour les vues de type ensemble, toutes les opérations définies pour la classe de base abstraite collections.abc.Set sont disponibles (par exemple, == , < ou ^ ).

0voto

Erik Aronesty Points 2223

Dans python 2, il est moins efficace de construire un ensemble qu'une liste.

Vous ne voulez pas supposer que l'utilisateur de la valeur de retour voudra effectuer une recherche dans le résultat. L'itération est également probable.

Dans python 3, ce n'est plus une liste. C'est un itérable ordonné car l'ordre est garanti.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X