Accueil › Apprendre l’informatique › Leçon 7 sur 14

Intermédiaire · 12 min de lecture · gratuit, sans compte

Listes et dictionnaires : organiser les données

Listes, dictionnaires, ensembles : choisis la bonne structure de données et comprends pourquoi certaines opérations sont bien plus rapides que d’autres.

Objectifs de cette leçon
  • Manipuler listes et dictionnaires
  • Choisir la structure adaptée au problème
  • Comprendre piles et files

Pourquoi les structures de données comptent

Un programme manipule rarement une seule valeur : il gère des listes de produits, des utilisateurs, des messages. Une structure de données est une manière d’organiser ces valeurs pour les retrouver, les ajouter et les modifier efficacement. Bien choisir sa structure change parfois un programme de « 10 minutes » à « 10 millisecondes ».

Les listes : une suite ordonnée

notes = [12, 8, 15]
notes.append(17)        # ajoute à la fin
print(notes[0])         # 12 : on compte à partir de 0
print(notes[-1])        # 17 : le dernier élément
print(notes[1:3])       # [8, 15] : tranche, fin exclue
notes.sort()
print(notes, len(notes), sum(notes))

Une liste est ordonnée, modifiable et accessible par position. Parfait quand l’ordre compte.

Les dictionnaires : retrouver par clé

Un dictionnaire associe une clé à une valeur — comme un annuaire, où tu cherches un nom pour obtenir un numéro, sans parcourir toute la liste.

eleve = {"prenom": "Amina", "age": 15, "classe": "3B"}
print(eleve["prenom"])
eleve["age"] = 16               # modifier
eleve["ville"] = "Tournai"      # ajouter
print(eleve.get("email", "inconnu"))   # valeur par défaut si absent

for cle, valeur in eleve.items():
    print(cle, "->", valeur)

Exemple utile : compter les occurrences des mots d’un texte.

texte = "le chat et le chien et le chat"
compte = {}
for mot in texte.split():
    compte[mot] = compte.get(mot, 0) + 1
print(compte)    # {'le': 3, 'chat': 2, 'et': 2, 'chien': 1}

Ensembles, piles et files

  • Ensemble (set) : collection sans doublons, avec test d’appartenance rapide. set([1,2,2,3]) donne {1, 2, 3}.
  • Pile (stack) : dernier entré, premier sorti (LIFO). Comme une pile d’assiettes. C’est ce qui permet le bouton « Annuler » d’un éditeur.
  • File (queue) : premier entré, premier sorti (FIFO). Comme la file d’attente d’un guichet : impression de documents, tâches à traiter.
pile = []
pile.append("A"); pile.append("B"); pile.append("C")
print(pile.pop())    # 'C' : le dernier arrivé sort en premier

from collections import deque
file = deque(["A", "B", "C"])
print(file.popleft())  # 'A' : le premier arrivé sort en premier

Quelle structure choisir ?

  • L’ordre importe, accès par position → liste.
  • Retrouver une valeur à partir d’un nom ou d’un identifiant → dictionnaire.
  • Éviter les doublons, tester « est-ce présent ? » → ensemble.
  • Annuler / revenir en arrière → pile. Traiter dans l’ordre d’arrivée → file.

Erreurs courantes

  • Accéder à un index qui n’existe pas : IndexError (une liste de 3 éléments va de 0 à 2).
  • Lire une clé absente avec d["x"] : KeyError ; préfère d.get("x") si elle peut manquer.
  • Copier une liste avec b = a : les deux noms désignent la même liste. Utilise b = a.copy().
  • Chercher dans une longue liste avec in dans une boucle : préfère un ensemble ou un dictionnaire.

Vérifie ce que tu as compris