Dictionnaires#

Dans ce chapitre, nous aborderons le concept de dictionnaire. Le fil conducteur de ce chapitre sera de répliquer le tableau suivant:

Nom

Age

Profession

Christophe

30

Enseignant

Compte tenu des concepts abordés jusqu’o présent, nous pourrions utiliser deux listes : une première liste qui contient les attributs (théoriques), c-à-d le prénom, l’âge, et la profession, et une deuxième liste qui contient les valeurs, c-à-d Christophe, 30, et enseignant. Le code suivant permet d’implémenter cette approche

liste1 = ['Prenom', 'Age', 'Profession']
liste2 = ['Christophe', 30, 'Enseignant']

print(liste1[0], ":", liste2[0])
print(liste1[1], ":", liste2[1])
print(liste1[2], ":", liste2[2])
Prenom : Christophe
Age : 30
Profession : Enseignant

Après analyse de ce code, on comprend que pour afficher un élément particulier, il faut connaître sa position au sein de la liste. Dans l’exemple précédent, étant donné qu’il n’y a que 3 attributs, c’est facile. Mais quand serait-il si le nombre d’attributs augmentait?

Création d’un dictionnaire#

Les dictionnaires permettent de solutionner ce problème. Un dictionnaire est défini en Python à l’aide des accolades (curly brackets) { et }. Un dictionnaire est composé de clés (les attributs théoriques) et de valeurs. Lors de la création du dictionnaire, il faut associer ces clés et ces valeurs.

Chaque clé est unique !

  • Créer un dictionnaire informations qui contient les informations mentionnées dans le tableau ci-dessus.

informations = {'Nom':'Christophe',
                'Age': 30,
                'Profession':'Enseignant'}

print("Nom:", informations['Nom'])
print("Age:", informations['Age'])
print("Profession:", informations['Profession'])
Nom: Christophe
Age: 30
Profession: Enseignant
  • Pour connaître la liste des clés du dictionnaire:

print("Keys:", informations.keys())
Keys: dict_keys(['Nom', 'Age', 'Profession'])
  • Pour connaître la liste des valeurs du dictionnaire

print("Values:", informations.values())
Values: dict_values(['Christophe', 30, 'Enseignant'])
  • Pour connaître les couples clés-valeurs du dictionnaire:

print("Items:")
print(informations.items())
Items:
dict_items([('Nom', 'Christophe'), ('Age', 30), ('Profession', 'Enseignant')])
  • Pour parcourir l’ensemble du dictionnaire:

for key, value in informations.items():
    print(key, "-", value)
Nom - Christophe
Age - 30
Profession - Enseignant

Tout d’abord, il faut se rappeler que informations.items() retourne des paires clé/valeur. C’est la raison pour laquelle, il y a deux éléments juste à côté du mot-clé for, c-à-d key et value. Ensuite, ces deux variables sont affichées dans le print.

Nous allons maintenant ajouter d’autres personnes dans le tableau :

Nom

Age

Profession

Christophe

30

Enseignant

Francois

40

Directeur

Juliette

20

Etudiante

prenoms = ['Christophe', 'Francois', 'Juliette']
ages = [30, 20, 40]
professions = ['Enseignant', 'Directeur', 'Etudiante']

informations = {'Nom': prenoms,
                'Age': ages,
                'Profession': professions}

for key, value in informations.items():
    print(key, "-", value)
Nom - ['Christophe', 'Francois', 'Juliette']
Age - [30, 20, 40]
Profession - ['Enseignant', 'Directeur', 'Etudiante']

L’ensemble des informations est affichée mais pour revenir à un format qui ressemble d’avantage à un tableau, le code se complique considérablement.

for key in informations.keys():
    print("%10s"%(key), end=" ")
print("")
for i in range(len(informations[key])):
    for value in informations.values():
        print("%10s"%(value[i]), end=" ")
    print("")
       Nom        Age Profession 
Christophe         30 Enseignant 
  Francois         20  Directeur 
  Juliette         40  Etudiante 

Exercices#

Exercice 1#

Réaliser un script qui permet de compter le nombre d’occurences de chaque élément dans une liste.

Utiliser la liste suivante:

[2, 4, 3, 9, 5, 9, 0, 9, 2, 3, 9]

my_list = [2, 4, 3, 9, 5, 9, 0, 9, 2, 3, 9]
my_dict = {}

# compte le nombre de chaque element
for elem in my_list:
    # s'il n'existe pas, on l'ajoute 
    # et on initialise le compteur a 1 
    if elem not in my_dict.keys():
        my_dict[elem] = 1
    # s'il existe deja, on augmente le compteur 
    else:
        my_dict[elem] += 1

for key, value in my_dict.items():
    print(key, "-", value)
2 - 2
4 - 1
3 - 2
9 - 4
5 - 1
0 - 1

Exercice 2#

Réaliser un script qui permet de trouver le mode d’une liste de valeurs (le mode est la valeur qui revient le plus fréquemment). Utiliser la liste définie précédemment. Le mode est donc le chiffre 9 qui apparaît 4 fois dans la liste.

my_list = [2, 4, 3, 9, 5, 9, 0, 9, 2, 3, 9]
my_dict = {}

for elem in my_list:
    if elem not in my_dict.keys():
        my_dict[elem] = 1 
    else:
        my_dict[elem] += 1
        
# trouver ou value est le plus grand
max_val = list(my_dict.values())[0]
max_key = list(my_dict.keys())[0]

for key, value in my_dict.items():
    if value > max_val:
        max_val = value 
        max_key = key

print('mode', max_key, '-', max_val, 'occurences')
mode 9 - 4 occurences