Première · Tableaux, textes et dictionnaires

Dictionnaires et enregistrements nommés

La case numéro deux est-elle une note, un âge ou une distance ? Lorsque chaque information possède un rôle propre, un nom de champ exprime mieux le modèle qu’une position. Les dictionnaires associent directement une clé à une valeur.

SofienAvec SofienIngénieur et enseignant en informatique
Dans ce chapitre

Un cap pour ce chapitre

Ce que vous saurez faire

  • Créer lire et modifier une entrée de dictionnaire
  • Parcourir les clés les valeurs et les couples associés
  • Utiliser un dictionnaire comme enregistrement nommé
Les bases utiles pour commencer

Une association identifiée par sa clé

Le dictionnaire {"prenom": "Lina", "classe": "1G2", "note": 15} associe trois clés à trois valeurs. L’accès eleve["note"] retrouve 15 sans demander la position du champ. Une clé doit être unique dans un dictionnaire : lui affecter une nouvelle valeur remplace l’association précédente. Plusieurs clés peuvent en revanche posséder la même valeur. Cette organisation convient aux enregistrements dont les champs ont des rôles différents, mais aussi à des correspondances comme un code de station vers une mesure. Le choix des clés traduit la manière dont on souhaite retrouver les informations.

Une clé numérique reste une clé, pas un indice de position. Dans {10: "A", 20: "B"}, l’accès de clé dix retrouve A ; l’accès de clé zéro ne désigne pas la première association. La nature de la structure détermine le sens des crochets.

Créer et modifier une entrée

L’affectation eleve["note"] = 17 met à jour le champ existant. eleve["option"] = "NSI" ajoute une nouvelle association si cette clé est absente. Il faut distinguer la création d’une entrée et la lecture d’une clé manquante : eleve["ville"] lève une erreur si aucun tel champ n’existe. On peut tester "ville" in eleve avant l’accès. Le test in porte ici sur les clés, pas sur les valeurs. Pour un petit enregistrement, préciser les champs attendus dans le contrat évite les différences de nommage comme "note" et "notes".

Une quantité nulle constitue encore une valeur associée à une clé. Affecter zéro à un produit épuisé ne supprime pas automatiquement son entrée. On peut ainsi distinguer un produit connu sans stock d’un produit totalement absent du catalogue.

Parcourir selon l’information utile

Le parcours for cle in d parcourt les clés. La méthode d.keys() rend ce rôle explicite ; d.values() fournit les valeurs ; d.items() fournit les couples clé-valeur. Pour afficher chaque champ avec son contenu, on peut écrire for cle, valeur in d.items(). Pour additionner des quantités stockées comme valeurs, values peut suffire. Le choix du parcours dépend de la question. Les dictionnaires Python conservent l’ordre d’insertion, mais cet ordre ne remplace pas le sens des clés et ne constitue pas un tri alphabétique automatique.

mesures = {"A": 18, "B": 21, "C": 18}
for station, temperature in mesures.items():
    print(station, temperature)

Le parcours des valeurs ne permet pas toujours de retrouver la clé, car plusieurs clés peuvent partager la même valeur. Si deux stations mesurent dix-huit degrés, rechercher leur nom à partir de la température seule perd cette distinction. Les couples fournis par items() conservent l’association.

Modéliser plutôt que tout stocker sans règle

Une liste d’enregistrements peut représenter plusieurs élèves partageant les mêmes champs. Chaque dictionnaire décrit alors une ligne et chaque clé un descripteur. Des données EXIF d’image constituent également un exemple de champs nommés : dimensions, date ou paramètres de prise de vue, selon les informations présentes. Il faut respecter le domaine de chaque champ et distinguer donnée absente, zéro et texte vide. L’accès par clé améliore la lisibilité, mais ne garantit pas à lui seul que les informations ont été correctement saisies ou qu’un identifiant est adapté.

Une liste d’élèves peut contenir plusieurs prénoms identiques. Utiliser uniquement le prénom comme clé d’un dictionnaire écraserait alors une inscription. Choisissez une clé qui identifie vraiment un objet dans le domaine, ou conservez plusieurs enregistrements dans un tableau.

Construire un compteur d’occurrences

Pour compter les lettres de « cacao », on initialise un dictionnaire vide. À chaque caractère, on crée une entrée de valeur un si la clé manque ; sinon on augmente le compteur existant. Après les deux premiers caractères, les compteurs sont c égal à un et a égal à un. À la fin, c et a valent deux et o vaut un.

Le test d’appartenance porte sur les clés. Il protège la lecture du compteur avant son augmentation. La somme des valeurs finales vaut cinq, égale au nombre de caractères parcourus. Cette propriété constitue une vérification utile du traitement.

Distinguer schéma commun et données facultatives

Deux relevés peuvent partager les champs station et température, tandis qu’un champ pluie manque dans l’un. Les traitements utilisant seulement la température restent possibles si leurs autres préconditions sont satisfaites. Un calcul sur la pluie doit d’abord définir ce que signifie l’absence.

Pour une moyenne, remplacer une mesure manquante par zéro change à la fois la somme et le nombre d’observations. Une approche possible conserve l’absence puis calcule sur les seules mesures disponibles, en annonçant leur effectif. Le dictionnaire facilite les accès par nom ; la validité des calculs dépend toujours du contrat des champs et des décisions sur les valeurs manquantes.

À vous de faire varier les choses

Une clé, une association

Ajoutez ou remplacez une quantité, puis choisissez comment parcourir le dictionnaire. Les entrées et le résultat du parcours restent visibles.

Lire le résultat de l’expérience initiale

Association remplacée

La clé pomme identifie une seule entrée. Le parcours items choisit les informations produites.

CléValeur
pain3
pomme6
lait2

Modifier une valeur et créer une clé sont deux opérations différentes. Le parcours doit montrer les informations dont l’algorithme a besoin.

De la compréhension à l’autonomie

À vous de résoudre

Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.

Exercice 1 · S’entraîner#

Une clé remplacée

On crée d = {"A": 4, "B": 7}, puis on exécute d["A"] = 9 et d["C"] = 4. Donnez le contenu final et sa longueur.

Indice 1

La première affectation vise une clé existante.

Indice 2

La seconde ajoute une clé nouvelle.

Comprendre la correction

Le dictionnaire devient {"A": 9, "B": 7, "C": 4} et sa longueur vaut 3. La valeur 4 initialement associée à A est remplacée ; elle apparaît ensuite pour C. Le nombre d’entrées dépend des clés distinctes, pas du nombre d’affectations effectuées ni des valeurs différentes.

Exercice 2 · S’entraîner#

Tester le bon ensemble

Pour d = {"rouge": 3, "bleu": 5}, que valent "rouge" in d et 3 in d ? Comment chercher la valeur 3 ?

Indice 1

L’opérateur in appliqué au dictionnaire examine les clés.

Indice 2

La méthode values permet d’accéder aux valeurs.

Comprendre la correction

"rouge" in d vaut True et 3 in d vaut False, car les clés sont les deux couleurs. Pour rechercher parmi les valeurs, on peut écrire 3 in d.values(), qui vaut True. Cette différence est essentielle lorsqu’une donnée numérique peut être une clé dans un autre modèle.

Exercice 3 · S’entraîner#

Choisir le parcours

Un dictionnaire stocke {"pain": 3, "pomme": 8, "lait": 2}. Quel parcours permet de calculer la quantité totale ? Lequel permet d’afficher produit et quantité ensemble ?

Indice 1

La somme ne nécessite que les quantités.

Indice 2

L’affichage doit conserver chaque association.

Comprendre la correction

Pour la somme, on parcourt stock.values() et on additionne 3, 8 et 2, soit 13. Pour afficher produit et quantité, on parcourt stock.items() et on décompose chaque couple. Parcourir seulement les clés obligerait à relire stock[produit], ce qui reste possible mais exprime moins directement le besoin.

Exercice 4 · S’entraîner#

Une absence n’est pas zéro

Un relevé ne contient pas la clé "pluie". Pourquoi ajouter automatiquement une valeur zéro peut-il déformer les données ? Proposez une distinction utile.

Indice 1

Zéro peut être une mesure réelle.

Indice 2

L’absence peut signifier que le capteur n’a rien transmis.

Comprendre la correction

Zéro millimètre affirme qu’aucune pluie n’a été mesurée. Une clé absente peut signifier qu’aucune mesure n’est disponible. Les confondre fausse une moyenne ou une interprétation météorologique. Il faut conserver une convention explicite pour les données manquantes et ne remplacer par zéro que si le domaine justifie réellement cette décision.

Exercice 5 · Approfondir et relier#

Compter les lettres sans clé manquante

Construisez les compteurs de « cacao » dans un dictionnaire. Donnez l’état après trois caractères puis l’état final. Expliquez le test préalable à une augmentation et vérifiez le nombre total de lettres à partir des compteurs.

Indice 1

Une première occurrence crée la clé.

Indice 2

Les occurrences suivantes lisent et augmentent sa valeur.

Comprendre la correction

Après c, a, c, les compteurs valent c deux et a un. À la fin, c vaut deux, a deux et o un. Avant de lire le compteur, on teste si la lettre appartient au dictionnaire ; sinon on crée son entrée. La somme deux plus deux plus un redonne cinq caractères.

Exercice 6 · Approfondir et relier#

Un prénom qui écrase une inscription

On mémorise successivement les inscriptions (17, Lina, 1G1) et (28, Lina, 1G2) dans un dictionnaire dont la clé est le prénom. Combien d’entrées restent après deux affectations ? Proposez une meilleure clé et expliquez la condition nécessaire.

Indice 1

Une clé ne possède qu’une association à la fois.

Indice 2

Les identifiants fournis sont distincts.

Comprendre la correction

Une seule entrée Lina reste ; la seconde affectation remplace la première. Utiliser les identifiants 17 et 28 conserve deux dossiers, à condition que ces identifiants soient uniques selon le modèle. Les prénoms ne remplissent pas cette condition. Le choix de clé doit être décidé avant l’import pour éviter une perte silencieuse.

Exercice 7 · Approfondir et relier#

Zéro ou absence dans une moyenne

Trois relevés de pluie donnent 0, 6 et une valeur absente. Selon la règle « moyenner seulement les mesures reçues », calculez la moyenne et l’effectif. Comparez avec le remplacement de l’absence par zéro. Expliquez ce qui est modifié.

Indice 1

Le zéro réellement reçu est une observation valide.

Indice 2

La valeur absente ne compte pas dans l’effectif choisi.

Comprendre la correction

Avec les seules mesures reçues, la somme vaut six et l’effectif deux : la moyenne vaut trois. Remplacer l’absence par zéro donnerait un effectif trois et une moyenne deux. Cela inventerait une mesure et modifierait le résultat. Il faut annoncer la règle et conserver le nombre de mesures utilisées.

Les erreurs qui méritent un détour

Chercher une valeur avec in sans préciser le parcours
Dans un dictionnaire, in examine les clés ; utilisez values pour les valeurs.
Inventer une valeur pour une donnée manquante
Choisissez une convention qui distingue absence et mesure réelle, puis documentez-la.

La fiche à garder

L’essentiel à retenir

  • Une clé identifie une association unique.
  • keys, values et items répondent à des besoins différents.
  • Les champs nommés doivent garder un sens et un domaine cohérents.

Cette notion au bac

Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.

Le prochain pas

Retrouver le catalogue de Première

Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.