Quand devrais-je utiliser un dictionnaire, une liste ou un ensemble?
Y a-t-il des scénarios qui sont plus adaptés à chaque type de données?
Quand devrais-je utiliser un dictionnaire, une liste ou un ensemble?
Y a-t-il des scénarios qui sont plus adaptés à chaque type de données?
Une liste
garde l'ordre, dict
et set
ne le font pas : lorsque vous vous souciez de l'ordre, vous devez donc utiliser une liste
(si votre choix de conteneurs est limité à ces trois, bien sûr ;-)).
dict
associe chaque clé à une valeur, tandis que list
et set
contiennent simplement des valeurs : des cas d'utilisation très différents, évidemment.
set
exige que les éléments soient hashables, list
ne l'exige pas : si vous avez des éléments non hashables, vous ne pouvez donc pas utiliser un set
et devez plutôt utiliser une liste
.
set
interdit les doublons, list
ne le fait pas : aussi une distinction cruciale. (Un "multiset", qui mappe les doublons en un décompte différent pour les éléments présents plus d'une fois, peut être trouvé dans collections.Counter
- vous pourriez en construire un en tant que dict
, si pour une raison étrange vous ne pouviez pas importer collections
, ou, en Python pré-2.7 en tant que collections.defaultdict(int)
, en utilisant les éléments comme clés et la valeur associée comme le décompte).
Vérifier l'appartenance d'une valeur dans un set
(ou dict
, pour les clés) est incroyablement rapide (environ un temps constant et court), tandis que dans une liste, cela prend du temps proportionnel à la longueur de la liste dans le cas moyen et pire. Donc, si vous avez des éléments hashables, que vous vous moquez de l'ordre ou des doublons, et que vous voulez vérifier l'appartenance rapidement, set
est meilleur que list
.
Je pense que c'est le contraire.. Alex devrait donner ses votes à Jon. Cette réponse couvre à peu près tout et elle est beaucoup plus concise et claire.
Lorsque vous souhaitez une collection non ordonnée d'éléments uniques, utilisez un set
. (Par exemple, lorsque vous voulez l'ensemble de tous les mots utilisés dans un document).
Lorsque vous souhaitez collecter une liste ordonnée immuable d'éléments, utilisez un tuple
. (Par exemple, lorsque vous voulez une paire (nom, numéro de téléphone) que vous souhaitez utiliser comme élément dans un set, vous auriez besoin d'un tuple plutôt que d'une liste car les sets nécessitent que les éléments soient immuables).
Lorsque vous souhaitez collecter une liste ordonnée mutable d'éléments, utilisez une list
. (Par exemple, lorsque vous voulez ajouter de nouveaux numéros de téléphone à une liste : [numéro1, numéro2, ...]).
Lorsque vous souhaitez une correspondance des clés aux valeurs, utilisez un dict
. (Par exemple, lorsque vous voulez un répertoire téléphonique qui fait correspondre les noms aux numéros de téléphone : {'John Smith' : '555-1212'}
). Notez que les clés dans un dict ne sont pas ordonnées. (Si vous itérez à travers un dict (répertoire téléphonique), les clés (noms) peuvent apparaître dans n'importe quel ordre).
Bien que cela ne couvre pas les set
, c'est une bonne explication des dict
et des list
:
Les listes sont ce qu'elles semblent être - une liste de valeurs. Chacune d'entre elles est numérotée, en commençant par zéro - la première est numérotée zéro, la deuxième 1, la troisième 2, etc. Vous pouvez supprimer des valeurs de la liste et ajouter de nouvelles valeurs à la fin. Exemple : les noms de vos nombreux chats.
Les dictionnaires sont similaires à ce que leur nom suggère - un dictionnaire. Dans un dictionnaire, vous avez un 'index' de mots, et pour chacun d'eux une définition. En python, le mot est appelé une 'clé', et la définition une 'valeur'. Les valeurs dans un dictionnaire ne sont pas numérotées - elles ne sont pas dans un ordre spécifique non plus - la clé fait la même chose. Vous pouvez ajouter, supprimer et modifier les valeurs dans les dictionnaires. Exemple : annuaire téléphonique.
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.