Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Introduction aux Dictionnaires en Python

Dans cette partie, vous apprendrez à utiliser les dictionnaires Python, qui vous permettent de connecter des informations liées. Vous apprendrez à accéder aux informations une fois qu’elles sont dans un dictionnaire et à modifier ces informations. Comme les dictionnaires peuvent stocker une quantité quasi illimitée d’informations, je vais vous montrer comment parcourir les données d’un dictionnaire. De plus, vous apprendrez à imbriquer des dictionnaires dans des listes, des listes dans des dictionnaires, et même des dictionnaires dans d’autres dictionnaires.

Comprendre les dictionnaires vous permet de modéliser plus précisément une variété d’objets du monde réel. Vous pourrez créer un dictionnaire représentant une personne, puis stocker autant d’informations que vous le souhaitez sur cette personne. Vous pouvez stocker son nom, son âge, sa localisation, sa profession et tout autre aspect d’une personne que vous pouvez décrire. Vous pourrez stocker n’importe quels deux types d’informations qui peuvent être mis en correspondance, comme une liste de mots et leurs significations, une liste de noms de personnes et leurs numéros préférés, une liste de montagnes et leurs altitudes, etc.

1. Un Dictionnaire Simple

Considérons un exemple simple concernant un footballeur célèbre camerounais. Ce dictionnaire simple stocke des informations sur ce joueur :

footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant', 'buts_selection': 56}

print(footballeur_0['nom'])
print(footballeur_0['poste'])
print(footballeur_0['buts_selection'])
Eto'o
Attaquant
56

Le dictionnaire footballeur_0 stocke le nom du joueur, son poste et son nombre de buts en sélection. Les dernières lignes accèdent à ces informations et les affichent :

Eto'o
Attaquant
56

Comme pour la plupart des nouveaux concepts de programmation, l’utilisation des dictionnaires demande de la pratique.

Travailler avec les Dictionnaires

Un dictionnaire en Python est une collection de paires clé-valeur. Chaque clé est connectée à une valeur, et vous pouvez utiliser une clé pour accéder à la valeur associée à cette clé. La valeur d’une clé peut être un nombre, une chaîne de caractères, une liste, ou même un autre dictionnaire. En fait, vous pouvez utiliser n’importe quel objet que vous pouvez créer en Python comme valeur dans un dictionnaire.

En Python, un dictionnaire est entouré d’accolades {} , avec une série de paires clé-valeur à l’intérieur des accolades:

Dans cet exemple :

  • Le dictionnaire alien_0 stocke deux paires clé-valeur : 'couleur': 'vert' et 'points': 5.

  • Les clés sont 'couleur' et 'points'.

  • Les valeurs sont 'vert' et 5.

footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant'}

Une paire clé-valeur est un ensemble de valeurs associées les unes aux autres. Chaque clé est connectée à sa valeur par deux-points :, et les paires clé-valeur individuelles sont séparées par des virgules. Vous pouvez stocker autant de paires clé-valeur que vous le souhaitez dans un dictionnaire.

Le dictionnaire le plus simple contient exactement une paire clé-valeur:

footballeur_0 = {'nom': 'Eto\'o'}

Ce dictionnaire stocke une seule information sur footballeur_0, à savoir son nom. La chaîne ‘nom’ est une clé dans ce dictionnaire, et sa valeur associée est ‘Eto'o’.

Accéder aux Valeurs dans un Dictionnaire

Pour obtenir la valeur associée à une clé, donnez le nom du dictionnaire puis placez la clé entre crochets []:

footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant'}
print(footballeur_0['nom'])
Eto'o

Cela renvoie la valeur associée à la clé ‘nom’ :

Eto'o

Vous pouvez avoir un nombre illimité de paires clé-valeur dans un dictionnaire. Si nous voulons connaître le nombre de buts marqués par ce joueur :

footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant', 'buts_selection': 56}
buts_marques = footballeur_0['buts_selection']
print(f"{footballeur_0['nom']} a marqué {buts_marques} buts pour le Cameroun !")

Le code récupère la valeur associée à la clé ‘buts_selection’ et l’assigne à la variable buts_marques. La ligne suivante imprime une déclaration sur le nombre de buts marqués:

Eto'o a marqué 56 buts pour le Cameroun !

Ajouter de Nouvelles Paires Clé-Valeur

Les dictionnaires sont des structures dynamiques, et vous pouvez ajouter de nouvelles paires clé-valeur à un dictionnaire à tout moment. Pour ajouter une nouvelle paire clé-valeur, donnez le nom du dictionnaire suivi de la nouvelle clé entre crochets avec la nouvelle valeur.

Ajoutons deux nouvelles informations au dictionnaire footballeur_0 : son club actuel et son numéro de maillot préféré :

footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant'}
print(footballeur_0)

footballeur_0['club_actuel'] = 'Retraité'
footballeur_0['numero_maillot'] = 9
print(footballeur_0)

Nous commençons par définir le dictionnaire initial. Ensuite, nous ajoutons une nouvelle paire clé-valeur pour ‘club_actuel’ et une autre pour ‘numero_maillot’. Lorsque nous imprimons le dictionnaire modifié, nous voyons les deux paires clé-valeur supplémentaires :

{'nom': 'Eto\'o', 'poste': 'Attaquant'}
{'nom': 'Eto\'o', 'poste': 'Attaquant', 'club_actuel': 'Retraité', 'numero_maillot': 9}

La version finale du dictionnaire contient quatre paires clé-valeur. Notez que l’ordre des paires peut varier, mais depuis Python 3.7, l’ordre d’insertion est généralement conservé.

Commencer avec un Dictionnaire Vide

Il est parfois pratique, voire nécessaire, de commencer avec un dictionnaire vide puis d’ajouter chaque nouvel élément. Pour commencer à remplir un dictionnaire vide, définissez un dictionnaire avec des accolades vides {}, puis ajoutez chaque paire clé-valeur sur sa propre ligne.

Par exemple, construisons un dictionnaire pour un plat camerounais :

plat_camerounais = {}

plat_camerounais['nom'] = 'Ndolé'
plat_camerounais['region_origine'] = 'Littoral'

print(plat_camerounais)

Nous définissons un dictionnaire vide plat_camerounais, puis nous y ajoutons le nom et la région d’origine. Le résultat est :

{'nom': 'Ndolé', 'region_origine': 'Littoral'}

Typiquement, vous utiliserez des dictionnaires vides lorsque vous stockez des données fournies par l’utilisateur ou lorsque vous écrivez du code qui génère automatiquement un grand nombre de paires clé-valeur.

Modifier les Valeurs dans un Dictionnaire

Pour modifier une valeur dans un dictionnaire, donnez le nom du dictionnaire avec la clé entre crochets, puis la nouvelle valeur que vous souhaitez associer à cette clé. Par exemple, changeons le poste de notre footballeur :

# joueur.py
footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant'}
print(f"Le poste initial de {footballeur_0['nom']} est {footballeur_0['poste']}.")

footballeur_0['poste'] = 'Avant-centre' # Modification de la valeur
print(f"Le nouveau poste de {footballeur_0['nom']} est {footballeur_0['poste']}.")

Nous définissons d’abord le dictionnaire. Ensuite, nous changeons la valeur associée à la clé ‘poste’ en ‘Avant-centre’. La sortie montre que le poste a bien été modifié :

Le poste initial de Eto'o est Attaquant.
Le nouveau poste de Eto'o est Avant-centre.

Pour un exemple plus intéressant, suivons la progression d’un étudiant au cours de ses études. Nous stockerons son niveau actuel et l’utiliserons pour déterminer s’il passe au niveau supérieur :

etudiant_0 = {'matricule': 'FE21A001', 'niveau': 'L1', 'moyenne': 14.5}
print(f"Niveau initial : {etudiant_0['niveau']}")

# Vérifier si l'étudiant passe au niveau supérieur
if etudiant_0['moyenne'] >= 10.0:
  if etudiant_0['niveau'] == 'L1':
      etudiant_0['niveau'] = 'L2'
      print("Promotion en Licence 2 !")
  elif etudiant_0['niveau'] == 'L2':
      etudiant_0['niveau'] = 'L3'
      print("Promotion en Licence 3 !")
  # Ajouter d'autres niveaux si nécessaire
else:
  print("L'étudiant doit redoubler.")

print(f"Nouveau niveau : {etudiant_0['niveau']}")

Nous commençons par définir un étudiant avec un matricule, un niveau initial et une moyenne. Une chaîne if-elif-else détermine s’il passe au niveau supérieur en fonction de sa moyenne et de son niveau actuel. La nouvelle valeur du niveau est stockée dans le dictionnaire.

Comme la moyenne est supérieure à 10 et le niveau est L1, l’étudiant passe en L2 :

Niveau initial : L1
Promotion en Licence 2 !
Nouveau niveau : L2

Supprimer des Paires Clé-Valeur

Lorsque vous n’avez plus besoin d’une information stockée dans un dictionnaire, vous pouvez utiliser l’instruction del pour supprimer complètement une paire clé-valeur. del a besoin du nom du dictionnaire et de la clé que vous voulez supprimer.

Supprimons le numéro de maillot du dictionnaire footballeur_0 :

# joueur.py
footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant', 'numero_maillot': 9}
print(footballeur_0)

del footballeur_0['numero_maillot'] # Supprime la clé 'numero_maillot' et sa valeur
print(footballeur_0)

La ligne avec del indique à Python de supprimer la clé ‘numero_maillot’ et la valeur associée. La sortie montre que la paire clé-valeur a été supprimée, mais le reste du dictionnaire n’est pas affecté:

{'nom': 'Eto\'o', 'poste': 'Attaquant', 'numero_maillot': 9}
{'nom': 'Eto\'o', 'poste': 'Attaquant'}

Note : La paire clé-valeur supprimée est définitivement retirée.

Un Dictionnaire d’Objets Similaires

L’exemple précédent impliquait le stockage de différents types d’informations sur un seul objet (un footballeur). Vous pouvez également utiliser un dictionnaire pour stocker un type d’information sur de nombreux objets. Par exemple, supposons que vous vouliez interroger plusieurs personnes et leur demander quel est leur plat camerounais préféré. Un dictionnaire est utile pour stocker les résultats d’un sondage simple:

plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole', # Note: 'ndole' apparaît deux fois
}

Nous avons divisé un dictionnaire plus grand sur plusieurs lignes. Chaque clé est le nom d’une personne ayant répondu au sondage, et chaque valeur est son choix de plat. Lorsque vous savez que vous aurez besoin de plus d’une ligne pour définir un dictionnaire, appuyez sur Entrée après l’accolade ouvrante. Indentez ensuite la ligne suivante d’un niveau (quatre espaces) et écrivez la première paire clé-valeur, suivie d’une virgule. À partir de ce moment, lorsque vous appuyez sur Entrée, votre éditeur de texte devrait automatiquement indenter toutes les paires clé-valeur suivantes pour correspondre à la première. Une fois que vous avez terminé de définir le dictionnaire, ajoutez une accolade fermante sur une nouvelle ligne après la dernière paire clé-valeur et indentez-la d’un niveau pour qu’elle s’aligne avec les clés. Il est bon d’inclure une virgule après la dernière paire clé-valeur également, afin d’être prêt à ajouter une nouvelle paire clé-valeur sur la ligne suivante.

Pour utiliser ce dictionnaire, étant donné le nom d’une personne ayant participé au sondage, vous pouvez facilement rechercher son plat préféré:

plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

plat_de_fatou = plats_preferes['fatou'].title() # .title() pour mettre la première lettre en majuscule
print(f"Le plat préféré de Fatou est {plat_de_fatou}.")

Pour voir quel plat Fatou a choisi, nous demandons la valeur associée à la clé ‘fatou’. La sortie montre le plat préféré de Fatou :

Le plat préféré de Fatou est Eru.

Utiliser get() pour Accéder aux Valeurs

L’utilisation de clés entre crochets pour récupérer la valeur qui vous intéresse dans un dictionnaire peut causer un problème potentiel : si la clé que vous demandez n’existe pas, vous obtiendrez une erreur (KeyError).

footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant'}
# print(footballeur_0['buts_selection']) # Ceci générerait une KeyError

Pour les dictionnaires, vous pouvez utiliser la méthode get() pour définir une valeur par défaut qui sera renvoyée si la clé demandée n’existe pas. La méthode get() nécessite une clé comme premier argument. Comme deuxième argument optionnel, vous pouvez passer la valeur à retourner si la clé n’existe pas:

footballeur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant'}

buts_valeur = footballeur_0.get('buts_selection', 'Nombre de buts non disponible.')
print(buts_valeur)

Si la clé ‘buts_selection’ existe dans le dictionnaire, vous obtiendrez la valeur correspondante. Si elle n’existe pas, vous obtenez la valeur par défaut. Dans ce cas, ‘buts_selection’ n’existe pas, et nous obtenons un message clair au lieu d’une erreur :

Nombre de buts non disponible.

S’il y a une chance que la clé que vous demandez n’existe pas, envisagez d’utiliser la méthode get() au lieu de la notation avec crochets. Si vous omettez le deuxième argument dans l’appel à get() et que la clé n’existe pas, Python retournera la valeur None.

Parcourir un Dictionnaire

Un seul dictionnaire Python peut contenir quelques paires clé-valeur ou des millions. Comme un dictionnaire peut contenir de grandes quantités de données, Python vous permet de le parcourir. Les dictionnaires peuvent être utilisés pour stocker des informations de diverses manières ; par conséquent, plusieurs façons différentes existent pour les parcourir. Vous pouvez parcourir toutes les paires clé-valeur d’un dictionnaire, ses clés ou ses valeurs.

Parcourir Toutes les Paires Clé-Valeur

Considérons un dictionnaire conçu pour stocker des informations sur un étudiant :

# etudiant.py
etudiant_0 = {
  'matricule': 'FE21A001',
  'prenom': 'Aicha',
  'nom': 'Diallo',
  }

Vous pouvez accéder à n’importe quelle information unique sur etudiant_0. Mais si vous vouliez voir tout ce qui est stocké dans le dictionnaire de cet étudiant ? Vous pourriez parcourir le dictionnaire en utilisant une boucle for:

etudiant_0 = {
  'matricule': 'FE21A001',
  'prenom': 'Aicha',
  'nom': 'Diallo',
  }

for cle, valeur in etudiant_0.items(): # .items() renvoie les paires clé-valeur
  print(f"\nClé: {cle}")
  print(f"Valeur: {valeur}")

Pour écrire une boucle for pour un dictionnaire, vous créez des noms pour les deux variables qui contiendront la clé et la valeur dans chaque paire clé-valeur. Vous pouvez choisir les noms que vous voulez. La deuxième partie de l’instruction for inclut le nom du dictionnaire suivi de la méthode items(), qui renvoie une vue des paires clé-valeur du dictionnaire. La boucle for assigne ensuite chacune de ces paires aux deux variables fournies. Dans l’exemple précédent, nous utilisons les variables pour imprimer chaque clé, suivie de la valeur associée. Le \n assure qu’une ligne vide est insérée avant chaque paire clé-valeur dans la sortie:

Clé: matricule
Valeur: FE21A001

Clé: prenom
Valeur: Aicha

Clé: nom
Valeur: Diallo

Parcourir toutes les paires clé-valeur fonctionne particulièrement bien pour les dictionnaires comme l’exemple plats_preferes.py, qui stocke le même type d’informations pour de nombreuses clés différentes. Si vous parcourez le dictionnaire plats_preferes, vous obtenez le nom de chaque personne et son plat préféré. Comme les clés se réfèrent toujours au nom d’une personne et la valeur est toujours un plat, nous utiliserons les variables nom et plat dans la boucle au lieu de cle et valeur. Cela facilitera le suivi de ce qui se passe à l’intérieur de la boucle:

# plats_preferes.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

for nom, plat in plats_preferes.items():
  print(f"Le plat préféré de {nom.title()} est {plat.title()}.")

Le code indique à Python de parcourir chaque paire clé-valeur dans le dictionnaire. Au fur et à mesure qu’il traite chaque paire, la clé est assignée à la variable nom, et la valeur est assignée à la variable plat. Ces noms descriptifs facilitent grandement la compréhension de ce que fait l’appel print().

Maintenant, en quelques lignes de code, nous pouvons afficher toutes les informations du sondage:

Le plat préféré de Paul est Ndole.
Le plat préféré de Fatou est Eru.
Le plat préféré de Pierre est Poulet Dg.
Le plat préféré de Aicha est Ndole.

Ce type de boucle fonctionnerait tout aussi bien si notre dictionnaire stockait les résultats d’un sondage auprès de mille ou même d’un million de personnes.

Parcourir Toutes les Clés d’un Dictionnaire

La méthode keys() est utile lorsque vous n’avez pas besoin de travailler avec toutes les valeurs d’un dictionnaire. Parcourons le dictionnaire plats_preferes et imprimons les noms de tous ceux qui ont participé au sondage :

# plats_preferes.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

for nom in plats_preferes.keys(): # .keys() renvoie les clés
  print(nom.title())

La ligne avec for indique à Python de récupérer toutes les clés du dictionnaire plats_preferes et de les assigner une par une à la variable nom. La sortie montre les noms de tous ceux qui ont participé au sondage :

Paul
Fatou
Pierre
Aicha

Parcourir les clés est en fait le comportement par défaut lors du parcours d’un dictionnaire, donc ce code aurait exactement la même sortie si vous écriviez for nom in plats_preferes: au lieu de for nom in plats_preferes.keys():. Vous pouvez choisir d’utiliser explicitement la méthode keys() si cela rend votre code plus facile à lire, ou vous pouvez l’omettre si vous le souhaitez.

Vous pouvez accéder à la valeur associée à n’importe quelle clé qui vous intéresse à l’intérieur de la boucle en utilisant la clé actuelle. Imprimons un message à quelques amis sur les plats qu’ils ont choisis. Nous parcourrons les noms dans le dictionnaire comme nous l’avons fait précédemment, mais lorsque le nom correspond à l’un de nos amis, nous afficherons un message sur leur plat préféré :

# plats_preferes.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

amis = ['paul', 'aicha'] # Liste d'amis
for nom in plats_preferes.keys():
  print(f"Salut {nom.title()}.")

  if nom in amis: # Vérifie si le nom est dans la liste d'amis
    plat = plats_preferes[nom].title() # Récupère le plat préféré
    print(f"\t{nom.title()}, je vois que tu aimes le {plat} !")

Nous créons une liste d’amis à qui nous voulons envoyer un message. À l’intérieur de la boucle, nous imprimons le nom de chaque personne. Ensuite, nous vérifions si le nom avec lequel nous travaillons figure dans la liste amis. Si c’est le cas, nous déterminons le plat préféré de la personne en utilisant le nom du dictionnaire et la valeur actuelle de nom comme clé. Nous imprimons ensuite un message d’accueil spécial, incluant une référence à leur choix de plat.

Le nom de tout le monde est imprimé, mais nos amis reçoivent un message spécial:

Salut Paul.
    Paul, je vois que tu aimes le Ndole !
Salut Fatou.
Salut Pierre.
Salut Aicha.
    Aicha, je vois que tu aimes le Ndole !

Vous pouvez également utiliser la méthode keys() pour savoir si une personne particulière a été interrogée. Cette fois, découvrons si ‘eric’ a participé au sondage :

# plats_preferes.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

if 'eric' not in plats_preferes.keys(): # Vérifie si 'eric' N'EST PAS une clé
  print("Eric, s'il te plaît, réponds à notre sondage !")

La méthode keys() ne sert pas seulement à boucler : elle renvoie en fait une vue de toutes les clés, et la ligne avec if vérifie simplement si ‘eric’ est dans cette vue. Comme il n’y est pas, un message est imprimé l’invitant à participer au sondage :

Eric, s'il te plaît, réponds à notre sondage !

Parcourir les Clés d’un Dictionnaire dans un Ordre Particulier

À partir de Python 3.7, parcourir un dictionnaire renvoie les éléments dans le même ordre où ils ont été insérés. Parfois, cependant, vous voudrez parcourir un dictionnaire dans un ordre différent.

Une façon de le faire est de trier les clés au moment où elles sont renvoyées dans la boucle for. Vous pouvez utiliser la fonction sorted() pour obtenir une copie triée des clés:

# plats_preferes.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

for nom in sorted(plats_preferes.keys()): # Trie les clés avant de boucler
  print(f"{nom.title()}, merci d'avoir répondu au sondage.")

Cette instruction for est comme les autres, sauf que nous avons enveloppé la méthode dictionary.keys() dans la fonction sorted(). Cela indique à Python de lister toutes les clés du dictionnaire et de trier cette liste avant de la parcourir. La sortie montre toutes les personnes qui ont participé au sondage, avec les noms affichés par ordre alphabétique:

Aicha, merci d'avoir répondu au sondage.
Fatou, merci d'avoir répondu au sondage.
Paul, merci d'avoir répondu au sondage.
Pierre, merci d'avoir répondu au sondage.

Parcourir Toutes les Valeurs d’un Dictionnaire

Si vous êtes principalement intéressé par les valeurs contenues dans un dictionnaire, vous pouvez utiliser la méthode values() pour renvoyer une vue des valeurs sans aucune clé. Par exemple, disons que nous voulons simplement une liste de tous les plats choisis dans notre sondage sur les plats préférés, sans le nom de la personne qui a choisi chaque plat :

# plats_preferes.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

print("Les plats suivants ont été mentionnés :")
for plat in plats_preferes.values(): # .values() renvoie les valeurs
  print(plat.title())

L’instruction for ici extrait chaque valeur du dictionnaire et l’assigne à la variable plat. Lorsque ces valeurs sont imprimées, nous obtenons une liste de tous les plats choisis:

Les plats suivants ont été mentionnés :
Ndole
Eru
Poulet Dg
Ndole

Cette approche extrait toutes les valeurs du dictionnaire sans vérifier les répétitions. Cela pourrait convenir avec un petit nombre de valeurs, mais dans un sondage avec un grand nombre de répondants, cela entraînerait une liste très répétitive. Pour voir chaque plat choisi sans répétition, nous pouvons utiliser un set (ensemble). Un ensemble est une collection dans laquelle chaque élément doit être unique:

# plats_preferes.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
  }

print("Les plats suivants ont été mentionnés (uniques) :")
for plat in set(plats_preferes.values()): # set() supprime les doublons
  print(plat.title())

Lorsque vous enveloppez set() autour d’une séquence contenant des éléments en double, Python identifie les éléments uniques et construit un ensemble à partir de ces éléments. Nous utilisons set() pour extraire les plats uniques de plats_preferes.values(). Le résultat est une liste non répétitive des plats mentionnés:

Les plats suivants ont été mentionnés (uniques) :
Poulet Dg
Eru
Ndole

Note : Vous pouvez construire un ensemble directement en utilisant des accolades et en séparant les éléments par des virgules: plats_uniques = {'ndole', 'eru', 'poulet dg', 'ndole'} donnerait {'ndole', 'eru', 'poulet dg'}. Il est facile de confondre les ensembles avec les dictionnaires car ils sont tous deux entourés d’accolades. Lorsque vous voyez des accolades mais pas de paires clé-valeur, vous regardez probablement un ensemble. Contrairement aux listes et dictionnaires, les ensembles ne conservent pas les éléments dans un ordre spécifique.

Imbrication (Nesting)

Parfois, vous voudrez stocker plusieurs dictionnaires dans une liste, ou une liste d’éléments comme valeur dans un dictionnaire. C’est ce qu’on appelle l’imbrication. Vous pouvez imbriquer des dictionnaires dans une liste, une liste d’éléments dans un dictionnaire, ou même un dictionnaire dans un autre dictionnaire. L’imbrication est une fonctionnalité puissante.

Une Liste de Dictionnaires

Le dictionnaire footballeur_0 contient diverses informations sur un joueur, mais il n’y a pas de place pour stocker des informations sur un deuxième joueur, encore moins sur toute une équipe. Comment gérer une équipe de joueurs ? Une façon est de faire une liste de joueurs où chaque joueur est un dictionnaire d’informations sur ce joueur.

Par exemple, le code suivant construit une liste de trois joueurs :

# joueurs.py
joueur_0 = {'nom': 'Eto\'o', 'poste': 'Attaquant', 'numero': 9}
joueur_1 = {'nom': 'Song', 'poste': 'Défenseur', 'numero': 4}
joueur_2 = {'nom': 'Mboma', 'poste': 'Attaquant', 'numero': 10}

equipe = [joueur_0, joueur_1, joueur_2] # Liste de dictionnaires

for joueur in equipe:
  print(joueur)

Nous créons d’abord trois dictionnaires, chacun représentant un joueur différent. Ensuite, nous stockons ces dictionnaires dans une liste appelée equipe. Enfin, nous parcourons la liste et imprimons chaque joueur:

{'nom': "Eto'o", 'poste': 'Attaquant', 'numero': 9}
{'nom': 'Song', 'poste': 'Défenseur', 'numero': 4}
{'nom': 'Mboma', 'poste': 'Attaquant', 'numero': 10}

Un exemple plus réaliste impliquerait plus de trois joueurs avec du code qui génère automatiquement chaque joueur. Dans l’exemple suivant, nous utilisons range() pour créer une liste de 30 étudiants :

# etudiants.py
# Crée une liste vide pour stocker les étudiants.
etudiants = []

# Crée 30 étudiants fictifs.
for numero_etudiant in range(30): # Boucle 30 fois
  nouvel_etudiant = {'matricule': f'FE21A{numero_etudiant+1:03}', 'niveau': 'L1', 'filiere': 'Informatique'}
  etudiants.append(nouvel_etudiant) # Ajoute l'étudiant à la liste

# Affiche les 5 premiers étudiants.
for etudiant in etudiants[:5]: # Parcours les 5 premiers
  print(etudiant)
print("...")

# Affiche combien d'étudiants ont été créés.
print(f"Nombre total d'étudiants: {len(etudiants)}")

Cet exemple commence par une liste vide pour contenir tous les étudiants qui seront créés. range(30) indique à Python combien de fois nous voulons que la boucle se répète. Chaque fois que la boucle s’exécute, nous créons un nouvel étudiant puis ajoutons chaque nouvel étudiant à la liste etudiants. Nous utilisons une tranche pour imprimer les cinq premiers étudiants, puis nous imprimons la longueur de la liste pour prouver que nous avons bien généré la liste complète de 30 étudiants:

{'matricule': 'FE21A001', 'niveau': 'L1', 'filiere': 'Informatique'}
{'matricule': 'FE21A002', 'niveau': 'L1', 'filiere': 'Informatique'}
{'matricule': 'FE21A003', 'niveau': 'L1', 'filiere': 'Informatique'}
{'matricule': 'FE21A004', 'niveau': 'L1', 'filiere': 'Informatique'}
{'matricule': 'FE21A005', 'niveau': 'L1', 'filiere': 'Informatique'}
...
Nombre total d'étudiants: 30

Ces étudiants ont tous les mêmes caractéristiques (niveau L1, filière Informatique), mais Python considère chacun comme un objet distinct, ce qui nous permet de modifier chaque étudiant individuellement.

Comment pourriez-vous travailler avec un groupe d’étudiants comme celui-ci ? Imaginez qu’à la fin de l’année, certains étudiants passent en L2. Nous pouvons utiliser une boucle for et une instruction if pour modifier le niveau des étudiants qui ont validé leur année. Par exemple, pour faire passer les 10 premiers étudiants en L2 :

# etudiants.py (suite)
# Supposons que les 10 premiers étudiants aient validé
for etudiant in etudiants[:10]: # Boucle sur les 10 premiers
  if etudiant['niveau'] == 'L1':
    etudiant['niveau'] = 'L2'
    etudiant['filiere'] = 'Informatique L2' # Optionnel: Mettre à jour la filière

# Réaffiche les 5 premiers étudiants pour voir le changement
print("\nAprès mise à jour du niveau pour les 10 premiers:")
for etudiant in etudiants[:5]:
  print(etudiant)
print("...")

Parce que nous voulons modifier les dix premiers étudiants, nous parcourons une tranche qui inclut seulement les dix premiers. Tous les étudiants sont en L1 au départ, mais ce ne sera pas toujours le cas, nous écrivons donc une instruction if pour nous assurer que nous ne modifions que les étudiants de L1. Si l’étudiant est en L1, nous changeons le niveau en ‘L2’ et mettons éventuellement à jour la filière, comme le montre la sortie suivante :

Après mise à jour du niveau pour les 10 premiers:
{'matricule': 'FE21A001', 'niveau': 'L2', 'filiere': 'Informatique L2'}
{'matricule': 'FE21A002', 'niveau': 'L2', 'filiere': 'Informatique L2'}
{'matricule': 'FE21A003', 'niveau': 'L2', 'filiere': 'Informatique L2'}
{'matricule': 'FE21A004', 'niveau': 'L2', 'filiere': 'Informatique L2'}
{'matricule': 'FE21A005', 'niveau': 'L2', 'filiere': 'Informatique L2'}
...

Il est courant de stocker un certain nombre de dictionnaires dans une liste lorsque chaque dictionnaire contient de nombreux types d’informations sur un objet. Par exemple, vous pourriez créer un dictionnaire pour chaque utilisateur d’un site web et stocker les dictionnaires individuels dans une liste appelée utilisateurs. Tous les dictionnaires de la liste devraient avoir une structure identique afin que vous puissiez parcourir la liste et travailler avec chaque objet dictionnaire de la même manière.

Une Liste dans un Dictionnaire

Plutôt que de mettre un dictionnaire dans une liste, il est parfois utile de mettre une liste dans un dictionnaire. Par exemple, considérez comment vous pourriez décrire un plat commandé par quelqu’un. Si vous n’utilisiez qu’une liste, tout ce que vous pourriez réellement stocker serait une liste des ingrédients ou accompagnements. Avec un dictionnaire, une liste d’accompagnements peut n’être qu’un aspect du plat que vous décrivez.

Dans l’exemple suivant, deux types d’informations sont stockés pour une commande : le plat principal et une liste d’accompagnements. La liste des accompagnements est une valeur associée à la clé ‘accompagnements’. Pour utiliser les éléments de la liste, nous donnons le nom du dictionnaire et la clé ‘accompagnements’, comme nous le ferions pour n’importe quelle valeur dans le dictionnaire. Au lieu de renvoyer une seule valeur, nous obtenons une liste d’accompagnements:

# commande_plat.py
# Stocke les informations sur un plat commandé.
commande_ndole = {
  'plat': 'Ndolé aux Crevettes',
  'accompagnements': ['plantain vapeur', 'miondo', 'riz'],
  }

# Résume la commande.
print(f"Vous avez commandé un {commande_ndole['plat']} "
      "avec les accompagnements suivants :") # Note: la chaîne est coupée pour la lisibilité

for accompagnement in commande_ndole['accompagnements']:
  print(f"\t- {accompagnement.title()}")

Nous commençons par un dictionnaire qui contient des informations sur une commande. Une clé dans le dictionnaire est ‘plat’, et la valeur associée est la chaîne ‘Ndolé aux Crevettes’. La clé suivante, ‘accompagnements’, a une liste comme valeur qui stocke tous les accompagnements demandés. Nous résumons la commande avant de la préparer. Pour imprimer les accompagnements, nous écrivons une boucle for. Pour accéder à la liste des accompagnements, nous utilisons la clé ‘accompagnements’, et Python récupère la liste des accompagnements du dictionnaire.

La sortie suivante résume la commande :

Vous avez commandé un Ndolé aux Crevettes avec les accompagnements suivants :
    - Plantain Vapeur
    - Miondo
    - Riz

Vous pouvez imbriquer une liste dans un dictionnaire chaque fois que vous souhaitez que plusieurs valeurs soient associées à une seule clé. Dans l’exemple précédent des plats préférés, si nous devions stocker les réponses de chaque personne dans une liste, les gens pourraient choisir plusieurs plats préférés. Lorsque nous parcourons le dictionnaire, la valeur associée à chaque personne serait une liste de plats plutôt qu’un seul plat. À l’intérieur de la boucle principale du dictionnaire, nous utilisons une autre boucle for pour parcourir la liste des plats préférés associés à chaque personne:

# artistes_preferes.py (adaptation de l'exemple original)
artistes_preferes = {
  'paul': ['petit pays', 'grace decca'],
  'fatou': ['charlotte dipanda'],
  'pierre': ['richard bona', 'manu dibango'],
  'aicha': ['petit pays', 'charlotte dipanda'],
  }

for nom, artistes in artistes_preferes.items():
  if len(artistes) == 1:
      print(f"\nL'artiste préféré de {nom.title()} est :")
  else:
      print(f"\nLes artistes préférés de {nom.title()} sont :")

  for artiste in artistes:
    print(f"\t- {artiste.title()}")

La valeur associée à chaque nom est maintenant une liste. Notez que certaines personnes ont un artiste préféré et d’autres en ont plusieurs. Lorsque nous parcourons le dictionnaire, nous utilisons la variable artistes pour contenir chaque valeur du dictionnaire, car nous savons que chaque valeur sera une liste. À l’intérieur de la boucle principale du dictionnaire, nous utilisons une autre boucle for pour parcourir la liste des artistes préférés de chaque personne. Nous ajoutons un if pour adapter le message si la personne n’a qu’un seul artiste préféré.

Maintenant, chaque personne peut lister autant d’artistes préférés qu’elle le souhaite :

Les artistes préférés de Paul sont :
    - Petit Pays
    - Grace Decca

L'artiste préféré de Fatou est :
    - Charlotte Dipanda

Les artistes préférés de Pierre sont :
    - Richard Bona
    - Manu Dibango

Les artistes préférés de Aicha sont :
    - Petit Pays
    - Charlotte Dipanda

Note : Vous ne devriez pas imbriquer les listes et les dictionnaires trop profondément. Si vous imbriquez des éléments beaucoup plus profondément que ce que vous voyez dans les exemples précédents, il existe très probablement une manière plus simple de résoudre le problème.

Un Dictionnaire dans un Dictionnaire

Vous pouvez imbriquer un dictionnaire dans un autre dictionnaire, mais votre code peut devenir rapidement compliqué. Par exemple, si vous avez plusieurs utilisateurs pour un site web, chacun avec un nom d’utilisateur unique, vous pouvez utiliser les noms d’utilisateur comme clés dans un dictionnaire. Vous pouvez ensuite stocker des informations sur chaque utilisateur en utilisant un dictionnaire comme valeur associée à leur nom d’utilisateur.

Dans la liste suivante, nous stockons trois informations sur chaque étudiant : son prénom, son nom et sa ville. Nous accéderons à ces informations en parcourant les matricules et le dictionnaire d’informations associé à chaque matricule:

# infos_etudiants.py
etudiants = {
  'fe21a001': {
  'prenom': 'aicha',
  'nom': 'diallo',
  'ville': 'douala',
  },
  'fe21a002': {
  'prenom': 'pierre',
  'nom': 'kamdem',
  'ville': 'yaoundé',
  },
}

for matricule, infos_etudiant in etudiants.items():
  print(f"\nMatricule: {matricule}")
  nom_complet = f"{infos_etudiant['prenom']} {infos_etudiant['nom']}"
  ville = infos_etudiant['ville']

  print(f"\tNom Complet: {nom_complet.title()}")
  print(f"\tVille: {ville.title()}")

Nous définissons d’abord un dictionnaire appelé etudiants avec deux clés : une pour chaque matricule ‘fe21a001’ et ‘fe21a002’. La valeur associée à chaque clé est un dictionnaire qui inclut le prénom, le nom et la ville de chaque étudiant. Nous parcourons le dictionnaire etudiants. Python assigne chaque clé à la variable matricule, et le dictionnaire associé à chaque matricule est assigné à la variable infos_etudiant. Une fois à l’intérieur de la boucle principale du dictionnaire, nous imprimons le matricule.

Nous commençons à accéder au dictionnaire interne. La variable infos_etudiant, qui contient le dictionnaire d’informations sur l’étudiant, a trois clés : ‘prenom’, ‘nom’, et ‘ville’. Nous utilisons chaque clé pour générer un nom complet et une ville soigneusement formatés pour chaque personne, puis imprimons un résumé de ce que nous savons sur chaque étudiant:

Matricule: fe21a001
    Nom Complet: Aicha Diallo
    Ville: Douala

Matricule: fe21a002
    Nom Complet: Pierre Kamdem
    Ville: Yaoundé

Notez que la structure du dictionnaire de chaque étudiant est identique. Bien que non requis par Python, cette structure facilite le travail avec les dictionnaires imbriqués. Si le dictionnaire de chaque étudiant avait des clés différentes, le code à l’intérieur de la boucle for serait plus compliqué.


Exercices

Voici les exercices du chapitre 6, traduits en français.

Exercice 1 : Personne

Utilisez un dictionnaire pour stocker des informations sur une personne que vous connaissez. Stockez son prénom, son nom, son âge et la ville où elle habite. Vous devriez avoir des clés telles que prenom, nom, age et ville. Imprimez chaque information stockée dans votre dictionnaire.

Exercice 2 : Nombres Préférés

Utilisez un dictionnaire pour stocker les numéros préférés des gens. Pensez à cinq noms et utilisez-les comme clés dans votre dictionnaire. Pensez à un numéro préféré pour chaque personne et stockez chacun comme valeur dans votre dictionnaire. Imprimez le nom de chaque personne et son numéro préféré. Pour encore plus de plaisir, interrogez quelques amis et obtenez des données réelles pour votre programme.

Exercice 3 : Glossaire

Un dictionnaire Python peut être utilisé pour modéliser un vrai dictionnaire. Cependant, pour éviter toute confusion, appelons-le un glossaire.

  • Pensez à cinq mots de programmation que vous avez appris dans les chapitres précédents. Utilisez ces mots comme clés dans votre glossaire et stockez leurs significations comme valeurs.

  • Imprimez chaque mot et sa signification sous forme de sortie soigneusement formatée. Vous pourriez imprimer le mot suivi de deux-points puis de sa signification, ou imprimer le mot sur une ligne puis imprimer sa signification indentée sur une deuxième ligne. Utilisez le caractère de nouvelle ligne (\n) pour insérer une ligne vide entre chaque paire mot-signification dans votre sortie.

Exercice 4 : Glossaire 2

Maintenant que vous savez comment parcourir un dictionnaire, nettoyez le code de l’exercice 3 en remplaçant votre série d’appels print() par une boucle qui parcourt les clés et les valeurs du dictionnaire. Lorsque vous êtes sûr que votre boucle fonctionne, ajoutez cinq autres termes Python à votre glossaire. Lorsque vous relancez votre programme, ces nouveaux mots et significations devraient automatiquement être inclus dans la sortie.

Exercice 5 : Fleuves

Créez un dictionnaire contenant trois grands fleuves et le pays que chaque fleuve traverse. Une paire clé-valeur pourrait être 'nil': 'égypte'.

  • Utilisez une boucle pour imprimer une phrase sur chaque fleuve, telle que “Le Nil traverse l’Égypte.”.

  • Utilisez une boucle pour imprimer le nom de chaque fleuve inclus dans le dictionnaire.

  • Utilisez une boucle pour imprimer le nom de chaque pays inclus dans le dictionnaire.

Exercice 6 : Sondage

Utilisez le code de plats_preferes.py (page 97, adapté).

  • Faites une liste de personnes qui devraient participer au sondage sur les plats préférés. Incluez des noms déjà présents dans le dictionnaire et d’autres qui n’y sont pas.

  • Parcourez la liste des personnes qui devraient participer au sondage. Si elles ont déjà participé au sondage, imprimez un message les remerciant d’avoir répondu. Si elles n’ont pas encore participé au sondage, imprimez un message les invitant à participer.

Exercice 7 : Personnes

Commencez avec le programme que vous avez écrit pour l’exercice 6-1. Créez deux nouveaux dictionnaires représentant différentes personnes et stockez les trois dictionnaires dans une liste appelée personnes. Parcourez votre liste de personnes. Pendant que vous parcourez la liste, imprimez tout ce que vous savez sur chaque personne.

Exercice 8 : Animaux de Compagnie

Créez plusieurs dictionnaires, où chaque dictionnaire représente un animal de compagnie différent (par exemple, chien, chat, chèvre, poule). Dans chaque dictionnaire, incluez le type d’animal et le nom du propriétaire. Stockez ces dictionnaires dans une liste appelée animaux. Ensuite, parcourez votre liste et imprimez tout ce que vous savez sur chaque animal.

Exercice 9 : Lieux Préférés

Créez un dictionnaire appelé lieux_preferes. Pensez à trois noms à utiliser comme clés dans le dictionnaire et stockez un à trois lieux préférés pour chaque personne (par exemple, Kribi, Limbé, Mont Cameroun). Pour rendre cet exercice un peu plus intéressant, demandez à quelques amis de nommer quelques-uns de leurs endroits préférés. Parcourez le dictionnaire et imprimez le nom de chaque personne et ses lieux préférés.

Exercice 10 : Nombres Préférés (Suite)

Modifiez votre programme de l’exercice 6-2 pour que chaque personne puisse avoir plus d’un numéro préféré. Ensuite, imprimez le nom de chaque personne ainsi que ses numéros préférés.

Exercice 11 : Villes

Créez un dictionnaire appelé villes. Utilisez les noms de trois villes comme clés dans votre dictionnaire (par exemple, Douala, Yaoundé, Bafoussam). Créez un dictionnaire d’informations sur chaque ville et incluez le pays dans lequel se trouve la ville, sa population approximative et un fait la concernant. Les clés du dictionnaire de chaque ville devraient être quelque chose comme pays, population et fait. Imprimez le nom de chaque ville et toutes les informations que vous avez stockées à son sujet.

Exercice 12 : Extensions

Nous travaillons maintenant avec des exemples suffisamment complexes pour pouvoir être étendus de nombreuses façons. Utilisez l’un des exemples de programmes de ce chapitre et étendez-le en ajoutant de nouvelles clés et valeurs, en modifiant le contexte du programme ou en améliorant le formatage de la sortie.


Corrections des Exercices

Correction 1 : Personne

# personne.py
personne = {
  'prenom': 'Aicha',
  'nom': 'Diallo',
  'age': 25,
  'ville': 'Douala',
}

print(f"Prénom: {personne['prenom']}")
print(f"Nom: {personne['nom']}")
print(f"Âge: {personne['age']}")
print(f"Ville: {personne['ville']}")

Correction 2 : Nombres Préférés

# numeros_preferes.py
numeros_preferes = {
  'paul': 7,
  'fatou': 10,
  'pierre': 9,
  'aicha': 3,
  'ali': 5,
}

for nom, numero in numeros_preferes.items():
  print(f"Le numéro préféré de {nom.title()} est {numero}.")

Correction 3 : Glossaire

# glossaire.py
glossaire_python = {
  'variable': 'Un nom qui fait référence à une valeur.',
  'liste': 'Une collection ordonnée d\'éléments.',
  'dictionnaire': 'Une collection de paires clé-valeur.',
  'boucle_for': 'Permet de parcourir les éléments d\'une séquence.',
  'condition_if': 'Permet d\'exécuter du code sous certaines conditions.',
}

for mot, signification in glossaire_python.items():
  print(f"{mot.title()}:\n\t{signification}\n")

Correction 4 : Glossaire 2

# glossaire_2.py
glossaire_python = {
  'variable': 'Un nom qui fait référence à une valeur.',
  'liste': 'Une collection ordonnée d\'éléments.',
  'dictionnaire': 'Une collection de paires clé-valeur.',
  'boucle_for': 'Permet de parcourir les éléments d\'une séquence.',
  'condition_if': 'Permet d\'exécuter du code sous certaines conditions.',
  'fonction': 'Un bloc de code nommé réutilisable.',
  'module': 'Un fichier contenant du code Python (fonctions, classes).',
  'classe': 'Un plan pour créer des objets.',
  'méthode': 'Une fonction qui appartient à une classe.',
  'imbrication': 'Stocker une structure de données (liste, dict) à l\'intérieur d\'une autre.',
}

for mot, signification in glossaire_python.items():
  print(f"{mot.title()}:\n\t{signification}\n")

Correction 5 : Fleuves

# fleuves.py
fleuves_pays = {
  'nil': 'égypte',
  'sanaga': 'cameroun',
  'congo': 'rdc',
  'niger': 'nigeria',
}

# Phrase sur chaque fleuve
print("--- Phrases sur les fleuves ---")
for fleuve, pays in fleuves_pays.items():
  print(f"Le fleuve {fleuve.title()} traverse le pays : {pays.title()}.")

# Nom de chaque fleuve
print("\n--- Noms des fleuves ---")
for fleuve in fleuves_pays.keys():
  print(fleuve.title())

# Nom de chaque pays
print("\n--- Noms des pays ---")
for pays in fleuves_pays.values():
  print(pays.title())

Correction 6 : Sondage

# sondage_plats.py
plats_preferes = {
  'paul': 'ndole',
  'fatou': 'eru',
  'pierre': 'poulet dg',
  'aicha': 'ndole',
}

personnes_a_interroger = ['paul', 'marie', 'pierre', 'david', 'fatou']

for personne in personnes_a_interroger:
  if personne in plats_preferes.keys():
    print(f"{personne.title()}, merci d'avoir déjà répondu au sondage !")
  else:
    print(f"{personne.title()}, nous vous invitons à participer à notre sondage sur les plats préférés !")

Correction 7 : Personnes

# personnes_liste.py
personne_1 = {
  'prenom': 'Aicha',
  'nom': 'Diallo',
  'age': 25,
  'ville': 'Douala',
}
personne_2 = {
  'prenom': 'Pierre',
  'nom': 'Kamdem',
  'age': 30,
  'ville': 'Yaoundé',
}
personne_3 = {
  'prenom': 'Fatou',
  'nom': 'Ba',
  'age': 22,
  'ville': 'Bafoussam',
}

personnes = [personne_1, personne_2, personne_3]

for personne in personnes:
  print(f"\nInformations sur {personne['prenom'].title()} {personne['nom'].title()}:")
  for cle, valeur in personne.items():
    print(f"\t{cle.replace('_', ' ').title()}: {str(valeur).title()}")

Correction 8 : Animaux de Compagnie

# animaux_compagnie.py
animal_1 = {'type': 'chien', 'proprietaire': 'Paul'}
animal_2 = {'type': 'chat', 'proprietaire': 'Fatou'}
animal_3 = {'type': 'chèvre', 'proprietaire': 'Pierre'}
animal_4 = {'type': 'poule', 'proprietaire': 'Aicha'}

animaux = [animal_1, animal_2, animal_3, animal_4]

for animal in animaux:
  print(f"\nInformations sur l'animal:")
  print(f"\tType: {animal['type'].title()}")
  print(f"\tPropriétaire: {animal['proprietaire'].title()}")

Correction 9 : Lieux Préférés

# lieux_preferes.py
lieux_preferes = {
  'paul': ['kribi', 'mont cameroun'],
  'fatou': ['limbé'],
  'pierre': ['chutes de la lobé', 'dja', 'kribi'],
}

for nom, lieux in lieux_preferes.items():
  print(f"\nLieux préférés de {nom.title()}:")
  for lieu in lieux:
    print(f"\t- {lieu.title()}")

Correction 10 : Nombres Préférés (Suite)

# numeros_preferes_multiples.py
numeros_preferes = {
  'paul': [7, 11],
  'fatou': [10],
  'pierre': [9, 1, 3],
  'aicha': [3, 8, 7],
  'ali': [5],
}

for nom, numeros in numeros_preferes.items():
  print(f"\nNuméros préférés de {nom.title()}:")
  for numero in numeros:
    print(f"\t- {numero}")

Correction 11 : Villes

# villes_cameroun.py
villes = {
  'douala': {
  'pays': 'cameroun',
  'population': 3_700_000, # Approximatif
  'fait': 'Capitale économique et plus grande ville.',
  },
  'yaoundé': {
  'pays': 'cameroun',
  'population': 3_500_000, # Approximatif
  'fait': 'Capitale politique, aussi appelée "ville aux sept collines".',
  },
  'bafoussam': {
  'pays': 'cameroun',
  'population': 600_000, # Approximatif
  'fait': 'Chef-lieu de la région de l\'Ouest, important centre commercial.',
  },
}

for ville, infos in villes.items():
  print(f"\nInformations sur {ville.title()}:")
  print(f"\tPays: {infos['pays'].title()}")
  print(f"\tPopulation: Environ {infos['population']:,}") # Ajoute des séparateurs de milliers
  print(f"\tFait intéressant: {infos['fait']}")

Correction 12 : Extensions

Cet exercice est ouvert. Une extension possible pour villes_cameroun.py serait d’ajouter une liste des langues parlées dans chaque ville :

# villes_cameroun_etendu.py
villes = {
  'douala': {
  'pays': 'cameroun',
  'population': 3_700_000,
  'fait': 'Capitale économique et plus grande ville.',
  'langues': ['français', 'anglais', 'douala', 'bassa'], # Ajout
  },
  'yaoundé': {
  'pays': 'cameroun',
  'population': 3_500_000,
  'fait': 'Capitale politique, aussi appelée "ville aux sept collines".',
  'langues': ['français', 'anglais', 'ewondo', 'béti'], # Ajout
  },
  'bafoussam': {
  'pays': 'cameroun',
  'population': 600_000,
  'fait': 'Chef-lieu de la région de l\'Ouest, important centre commercial.',
  'langues': ['français', 'fe\'efe\'e', 'ghomala\''], # Ajout
  },
}

for ville, infos in villes.items():
  print(f"\nInformations sur {ville.title()}:")
  print(f"\tPays: {infos['pays'].title()}")
  print(f"\tPopulation: Environ {infos['population']:,}")
  print(f"\tFait intéressant: {infos['fait']}")
  print(f"\tLangues parlées:") # Ajout
  for langue in infos['langues']: # Ajout
    print(f"\t\t- {langue.title()}") # Ajout

Dans ce notebook, nous avons exploré :

  • Comment créer et manipuler des dictionnaires en Python.

  • Accéder, ajouter, modifier et supprimer des paires clé-valeur.

  • Utiliser la méthode get() pour gérer gracieusement les clés manquantes.

  • Parcourir les dictionnaires de différentes manières.

  • Imbriquer des dictionnaires et des listes pour représenter des structures de données complexes.

  • Des exercices pratiques pour renforcer les concepts appris.

Les dictionnaires sont une structure de données fondamentale en Python qui vous permettent de modéliser efficacement des entités et des relations du monde réel.