🗂️python

Les listes et dictionnaires en Python : guide complet NSI

30 mars 2026 5 min de lecture

Introduction : Les piliers de la programmation Python

Si tu suis la spécialité NSI, tu as déjà croisé ces deux termes : listes et dictionnaires. Ce ne sont pas de simples notions, mais les véritables piliers de la programmation en Python. Elles te permettent d'organiser, de stocker et de manipuler des données de manière efficace. Que ce soit pour gérer les notes d'une classe, les caractéristiques d'un personnage de jeu vidéo, ou les résultats d'une expérience scientifique, tu auras constamment besoin de ces structures. Dans ce guide, on va décortiquer ensemble leur fonctionnement, leurs différences et leurs usages typiques pour que tu sois parfaitement à l'aise le jour du bac.

Les listes : ta collection ordonnée et modifiable

Une liste en Python est une séquence mutable et ordonnée d'éléments. "Mutable" signifie que tu peux la modifier après sa création, et "ordonnée" que chaque élément a une position précise, son index. C'est l'outil parfait pour ranger des choses dans un ordre spécifique.

Créer et accéder aux éléments d'une liste

Pour créer une liste, tu utilises des crochets []. Les éléments sont séparés par des virgules.

ma_liste = ["Python", 42, True, 3.14]

Comme tu peux le voir, une liste peut contenir différents types de données. Pour accéder à un élément, on utilise son index, en commençant à 0.

  • ma_liste[0] renvoie "Python".
  • ma_liste[-1] renvoie le dernier élément, 3.14 (indexation négative possible).

Manipuler une liste : les méthodes essentielles

La puissance des listes réside dans les opérations que tu peux effectuer dessus. Voici les méthodes que tu dois absolument connaître :

  • Ajouter : .append(valeur) ajoute à la fin. .insert(index, valeur) insère à une position.
  • Supprimer : .remove(valeur) enlève la première occurrence. del ma_liste[index] aussi.
  • Trouver : .index(valeur) renvoie l'index de la première occurrence.
  • Ordonner : .sort() trie la liste sur place. sorted(ma_liste) renvoie une nouvelle liste triée.

N'oublie pas le slicing (tranches) pour extraire des portions de liste : ma_liste[1:3] renvoie les éléments des index 1 à 2 (3 exclu).

Les dictionnaires : associer des clés et des valeurs

Si la liste est une collection ordonnée par des indices numériques, le dictionnaire est une collection non ordonnée (avant Python 3.7) qui associe des clés uniques à des valeurs. C'est comme un vrai dictionnaire : tu cherches un mot (la clé) pour obtenir sa définition (la valeur).

Structure et création d'un dictionnaire

On utilise des accolades {}. Chaque élément est un couple clé: valeur.

mon_dico = {"nom": "Dupont", "age": 17, "specialite": "NSI"}

Les clés doivent être de types immuables (chaînes, nombres, tuples). Les valeurs peuvent être absolument n'importe quoi, y compris d'autres listes ou dictionnaires !

Manipuler un dictionnaire comme un pro

L'accès se fait par la clé, et non par un index numérique.

  • Accéder : mon_dico["nom"] renvoie "Dupont". Méthode sécurisée : mon_dico.get("nom", "Valeur par défaut").
  • Ajouter/Modifier : mon_dico["moyenne"] = 15.5. Si la clé existe, la valeur est mise à jour.
  • Parcourir : Utilise .keys() pour les clés, .values() pour les valeurs, et .items() pour les couples (clé, valeur) dans une boucle for.
  • Supprimer : del mon_dico["age"] ou mon_dico.pop("age").

Quand utiliser une liste ou un dictionnaire ?

C'est une question cruciale. Le choix dépend de la nature de tes données et de ce que tu veux en faire.

  • Utilise une LISTE quand :
    • L'ordre des éléments est important (une file d'attente, un historique).
    • Tu as une simple collection d'items du même type (des notes, des températures).
    • Tu as besoin d'accéder aux éléments par leur position (le 3ème élément, les 10 premiers).
  • Utilise un DICTIONNAIRE quand :
    • Tu as besoin d'une association clé-valeur claire (nom → numéro étudiant, produit → prix).
    • Tu dois retrouver une valeur rapidement à partir d'une clé unique (recherche efficace).
    • L'ordre n'est pas ta priorité (avant Python 3.7), ou tu veux une structure plus descriptive.

Astuce NSI : Tu peux les combiner ! Une liste de dictionnaires est extrêmement courante pour représenter un tableau de données, comme un registre d'élèves.

élèves = [
{"nom": "Alice", "note": 16},
{"nom": "Bob", "note": 12}
]

Cas pratique NSI : Gestion d'une bibliothèque

Imaginons un mini-projet pour consolider tout ça : un système de gestion de livres.

On peut modéliser le catalogue par une liste de dictionnaires. Chaque dictionnaire représente un livre.

bibliothèque = [
{"titre": "Le Petit Prince", "auteur": "Saint-Exupéry", "annee": 1943, "emprunte": False},
{"titre": "1984", "auteur": "Orwell", "annee": 1949, "emprunte": True}
]

Maintenant, écris des fonctions pour :
1. Ajouter un nouveau livre (un dictionnaire) à la liste.
2. Marquer un livre comme emprunté en cherchant son titre (parcourir la liste, trouver le bon dictionnaire, modifier la clé "emprunte").
3. Lister tous les auteurs (parcourir la liste et collecter les valeurs de la clé "auteur" dans une nouvelle liste).

Ce petit exercice fait appel à la création, la modification, le parcours et l'imbrication de ces deux structures. C'est exactement le genre de compétence évaluée en NSI.

Conclusion et pour aller plus loin

Les listes et les dictionnaires ne sont pas que des sujets de cours, ce sont les outils quotidiens de tout programmeur Python. En les maîtrisant, tu ouvres la porte à la manipulation de données complexes, aux algorithmes de tri et de recherche, et à la modélisation de problèmes concrets.

Pour t'entraîner, reprends tes anciens projets et demande-toi si l'utilisation d'une liste ou d'un dictionnaire était la plus adaptée. Essaye de refactoriser ton code. La pratique est la clé pour que ces concepts deviennent une seconde nature. Bon courage pour la suite de ton parcours en NSI !

📚 Pour aller plus loin

Questions fréquentes

Quelle est la différence fondamentale entre une liste et un dictionnaire ?

La différence fondamentale réside dans l'accès aux données. Une liste est une collection ordonnée accessible par un index numérique positionnel (0, 1, 2...). Un dictionnaire est une collection de paires clé-valeur, accessible par une clé unique et descriptive (comme une chaîne de caractères). On utilise une liste pour une séquence, un dictionnaire pour une recherche rapide via une clé significative.

Est-ce qu'une liste peut contenir un dictionnaire, et inversement ?

Absolument ! C'est même très courant et puissant. Tu peux avoir une liste dont les éléments sont des dictionnaires (parfait pour un tableau de données). Exemple : une liste d'élèves, chaque élève étant un dictionnaire avec les clés 'nom', 'note', etc. Inversement, une valeur dans un dictionnaire peut très bien être une liste. Exemple : un dictionnaire avec la clé 'notes' associée à une liste de nombres.

Comment trier une liste de dictionnaires selon la valeur d'une clé spécifique ?

Pour cela, tu utilises la fonction <code>sorted()</code> avec l'argument <code>key</code>. Il faut lui passer une fonction (souvent une lambda) qui indique sur quelle clé trier. Par exemple, pour trier une liste <code>élèves</code> de dictionnaires par la note décroissante : <code>eleves_tries = sorted(élèves, key=lambda x: x['note'], reverse=True)</code>. Cette ligne dit : "Trie la liste 'élèves' en utilisant, pour chaque élément 'x', la valeur de x['note'] comme critère de comparaison, et fais-le dans l'ordre inverse (décroissant)."

Que se passe-t-il si j'essaie d'accéder à une clé qui n'existe pas dans un dictionnaire ?

Python lève une erreur de type <code>KeyError</code>. Pour éviter cela, tu as deux solutions principales : 1) Utiliser la méthode <code>.get(clé, valeur_par_defaut)</code> qui renvoie la valeur par défaut si la clé est absente (ex: <code>dico.get('age', 0)</code>). 2) Vérifier l'existence de la clé avec un test <code>if clé in dico:</code> avant d'y accéder. La première méthode est souvent plus concise.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
listes Python NSIdictionnaires Pythonstructures données Python
Pixel