Aller au contenu
M02 · C. Programmer en Python

Manipuler les données en Python : listes, dictionnaires, fichiers

Utiliser les fonctions, les listes, les tuples, les dictionnaires et les ensembles de Python, lire et écrire un fichier CSV, et s'appuyer sur la bibliothèque standard.

1Situer

Le formateur vous transmet les notes du groupe dans un fichier CSV exporté d'un tableur. Il veut la moyenne de chaque stagiaire, la liste des admis triée par ordre alphabétique, et un nouveau fichier avec les résultats. En Python, quelques lignes suffisent.

2Comprendre

Du fichier CSV au dictionnaire
notes.csv nom,note1,note2 Salma,14,16 Youssef,8,11 Imane,17,15 moyennes (dictionnaire) "Salma" → 15.0 "Youssef" → 9.5 "Imane" → 16.0 moyennes["Imane"] 16.0

Le fichier CSV commence par une ligne d'en-tête : les noms des colonnes.

1 / 5

Python fournit des structures de données prêtes à l’emploi. Bien les choisir rend le code plus court et plus sûr.

StructureExempleModifiableUsage typique
liste[12, 15, 9]ouiune suite ordonnée de valeurs
tuple(33.5, -7.6)nonune valeur composée fixe (coordonnées)
dictionnaire{"Salma": 14}ouiretrouver une valeur par sa clé
ensemble{"Fès", "Rabat"}ouides valeurs sans doublon

Fonctions et lambdas

Une fonction se définit avec def et retourne une valeur avec return. Une lambda est une petite fonction anonyme, utile pour trier :

def moyenne(notes):
    return sum(notes) / len(notes)

eleves.sort(key=lambda e: e["nom"])

Les fichiers

On ouvre un fichier avec open(nom, mode) : "r" pour lire, "w" pour écrire (le fichier est écrasé), "a" pour ajouter. Le module csv lit et écrit les fichiers exportés d’un tableur.

La bibliothèque standard

Inutile de tout réécrire : math (racine, arrondis), statistics (moyenne, médiane), random (tirages), csv, datetime… Un import suffit.

Exemple simple

Le répertoire du téléphone

On cherche un contact par son nom, pas par un numéro de case. Un dictionnaire Python fonctionne pareil : une clé (le nom) donne une valeur (le numéro).

contacts = {"Amine": "0612...", "Sara": "0661..."}
print(contacts["Sara"])
Exemple simple

La liste de courses

Une liste garde les articles dans l'ordre. On peut ajouter, retirer et compter les éléments.

courses = ["pain", "lait"]
courses.append("tomates")
print(len(courses))   # 3

3Manipuler

Exécutez le programme, puis modifiez-le : ajoutez un stagiaire dans le texte CSV, ou changez le seuil d'admission. Le fichier est créé dans la mémoire du navigateur.
Pas à pas dans le lab ↗Python se charge au premier clic (environ 12 Mo, une seule fois).
Console

4Pratiquer

Exercice 1 · La meilleure note

À partir du dictionnaire moyennes, affichez le nom du stagiaire qui a la meilleure moyenne.

Voir un indice

La fonction max accepte un paramètre key : max(moyennes, key=moyennes.get).

Voir le corrigé
meilleur = max(moyennes, key=moyennes.get)
print(meilleur, moyennes[meilleur])

Exercice 2 · Une fonction lambda pour trier

Affichez les stagiaires triés de la meilleure à la moins bonne moyenne.

Voir le corrigé
classement = sorted(moyennes.items(), key=lambda p: p[1], reverse=True)
for rang, (nom, m) in enumerate(classement, start=1):
    print(rang, nom, m)

Exercice 3 · Les villes sans doublon

Une liste contient les villes d'origine des stagiaires, avec des répétitions. Affichez les villes distinctes et leur nombre.

Voir le corrigé
villes = ["Fès", "Rabat", "Fès", "Oujda", "Rabat", "Tanger"]
distinctes = set(villes)
print(sorted(distinctes), len(distinctes))

5Vérifier

1. Quelle structure associe une clé à une valeur ?
2. Quelle est la particularité d'un tuple ?
3. Pourquoi ouvrir un fichier avec with open(...) ?