Listes, dicts, ensembles & tuples — quand et pourquoi
La moitié de l'écriture d'une logique propre consiste juste à choisir le bon conteneur pour vos données. Bonne nouvelle — ces quatre couvrent presque tout, et choisir entre eux est plus simple qu'il n'y paraît.
L'idée, en une ligne
Chaque conteneur est bon à une tâche : une liste garde l'ordre, un dict recherche par nom, un set ne garde que les éléments uniques, et un tuple est un enregistrement fixe qui ne change jamais.
Liste — ordonnée et modifiable
Écrite avec [ ]. Utilisez-la quand l'ordre compte et que vous ajouterez ou retirerez des éléments — une file de cas de test, ou des lignes de log dans l'ordre d'arrivée. Gestes de base : append (ajouter à la fin), pop (retirer et renvoyer), len (compter).
Dict — recherche par nom
Écrit avec { } en paires key: value. Vous cherchez par clé plutôt que par position — parfait pour une réponse d'API parsée ou un décompte de chaque erreur. Parcourez les paires avec d.items(). Les clés doivent être des choses immuables (un str, un nombre, un tuple).
Set — unique, appartenance rapide
Non ordonné, avec aucun doublon autorisé. Il brille à deux tâches : supprimer les doublons et répondre rapidement à « est-ce que x est ici ? ». Il fait aussi des maths d'ensembles :
a & b— éléments dans les deux (intersection)a | b— éléments dans l'un ou l'autre (union)a - b— éléments dansamais pasb(différence)
Tuple — un enregistrement fixe
Comme une liste, mais il ne peut pas être modifié une fois créé. Écrit avec ( ). Utilisez-le pour un groupe qui ne doit pas bouger, comme une paire (endpoint, method). Parce qu'il ne change jamais, un tuple peut même servir de clé de dict.
Voyez-le à l'œuvre
# Count how often each status code appears in a run
run = [200, 404, 200, 500, 404, 200]
counts = {} # dict: code -> how many times
for code in run:
counts[code] = counts.get(code, 0) + 1
print(counts) # {200: 3, 404: 2, 500: 1}
# Which distinct codes did we see? (a set drops duplicates)
print(set(run)) # {200, 404, 500}
# Did we miss an expected code? (set difference)
expected = {200, 201, 404}
print(expected - set(run)) # {201} -> never returnedLisez-le de haut en bas : le dict répond combien de chaque, le set répond lesquels sont distincts, et soustraire les sets vous dit ce qui manque. Mêmes données, trois questions différentes, chaque conteneur faisant ce qu'il fait de mieux.
Avancé — pourquoi un dict et un set sont si rapides
Chercher une clé dans un dict, ou vérifier si quelque chose est dans un set, prend à peu près le même petit temps que vous ayez 10 éléments ou 10 millions. Une liste ne peut pas faire ça — pour vérifier si une valeur est dans une liste, Python la parcourt en entier. Donc quand vous vous surprenez à demander souvent « est-ce ici ? », un set ou un dict est généralement le choix plus rapide.
Basé sur le tutoriel Python officiel (Structures de données)
Toutes les leçons de Fondations Python & la méthode en 6 étapes
- Variables, types, structures de contrôle & fonctions
- Listes, dicts, ensembles & tuples — quand et pourquoi
- Motifs de manipulation de chaînes
- La méthode en 6 étapes — un exemple travaillé
- Traçage à la main — là où la logique grandit vraiment