Fondations Python & la méthode en 6 étapes · Leçon 2 sur 5

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.

Par Shahriyar · Mis à jour

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 :

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

▸ counts.py
# 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 returned

Lisez-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

  1. Variables, types, structures de contrôle & fonctions
  2. Listes, dicts, ensembles & tuples — quand et pourquoi
  3. Motifs de manipulation de chaînes
  4. La méthode en 6 étapes — un exemple travaillé
  5. Traçage à la main — là où la logique grandit vraiment