Les dictionnaires.

Présentation

Les dictionnaires sont des conteneurs dont des éléments (valeurs) de tous types sont indexés par des immuables appelées clefs (généralement des chaînes de caractères mais aussi des tuples, ou des integers par exemple). Les dictionnaires ont une utilisation simple et pratique.

Exemple

 
		
		
Remarque

Dans un dictionnaire on peut mélanger les types des valeurs mais aussi des clefs. Attention à ne pas faire n'importe quoi ! Ne pas utiliser le même dictionnaire pour conserver les notes des élèves et des définitions de mots par exemple.

Remarque

Notons les différentes définitions :

Principaux outils.

Copier, ajouter, avoir la longueur.

Comme pour les listes, une variable ne contient pas un dictionnaire mais une référence à un dictionnaire, ce qui fait que modifier un dictionnaire donné en variable dans une fonction entraîne son changement à l'extérieur.

Pour faire une vraie copie d'un dictionnaire il faut utiliser la commande copie.

On ne peut pas concaténer des dictionnaires avec + (mais on peut utliser la fonction update pour grouper deux dictionnaires), on peut avoir la taille avec len.

Exemple

 
		
		

Vérifier la présence d'une clef.

Pour vérifier si un immuable est une clef d'un dictionnaire, on utilise in.

Exemple

 
		
		

Pour récupèrer la valeur associée à une clef on peut utiliser méthode get( clef , defaut ).

Exemple

 
		
		

Retrouver l'ensemble des clefs d'un dictionnaire.

Pour parcourir les clefs d'un dictionnaire, on utilise soit for clef in dictionnaire, soit la méthode keys()

Exemple

 

		

Retrouver l'ensemble des valeurs d'un dictionnaire.

Pour parcourir les valeurs d'un dictionnaire, on peut utiliser la méthode values()

Exemple

 
		
		

Retrouver l'ensemble des couples clefs-valeurs.

Pour parcourir les clefs et les valeurs, on utilise items().

Exemple

 
		
		

Q.C.M.


			

				
Q.C.M.

Le type de seconde2 est :





Q.C.M.

Je veux avoir la premiere spé de Colette je dois écrire :





Q.C.M.

Que vaut len(seconde2) ?





Q.C.M.

Que vaut seconde2["Anne"][1] ?





Q.C.M.

Benoit n'a pas eu 16 mais 10, que faut il faire pour changer sa note ?





Q.C.M.

Nathalie a recue les mêmes note que Sonia, que dois écrire pour la faire rentrer dans le dictionnaire seconde2 ?





Exercice.

Exercices

		
  1. Copier les instructions précédentes dans l'éditeur et lancer l'interpréteur.
  2. Directement dans la console et en une ligne de commande trouver :
    • La moyenne d'Etienne.
    • Si Franck est dans la classe.
    • Si Sandrine est dans la classe.
    • Le nombre d'élèves de la classe.
  3. Dans la console, ajouter Julie qui a 14 de moyenne.
  4. Nicolas a 8 de moyenne, corriger sa note.
  5. Faire une fonction qui calcul la moyenne d'une classe donnée sous la forme d'un dictionnaire comme seconde1.
  6. Faire une fonction qui détermine un meilleur d'une classe donnée sous la forme d'un dictionnaire comme seconde1.
  7. Faire une fonction qui retourne les meilleurs d'une classe donnée sous la forme d'un dictionnaire comme seconde1. La fonction retourne les noms sous forme d'une liste. N’hésitez pas à utiliser la fonction append.
  8. Faire une fonction qui retourne les noms des élèves sous la moyenne dans une liste.
  9. Faire une fonction qui ajoute un points à tous les élèves, attention cependant la moyenne ne peut dépasser 20.
Exercices

		
  1. Copier les instructions précédentes dans l'éditeur et lancer l'interpréteur.
  2. Directement dans la console et en une ligne de commande trouver :
    • Les notes en maths de Benoît
    • Les notes en PC de Céline.
    • Le nombre de notes d'Alain en anglais.
    • Le nombre d'élèves.
    • Si Gérard est dans la classe.
  3. Directement dans la console, ajouter Elaine qui a 20 et 16 en Maths, 13 et 15 en P.C. et 12,14 et 17 en Anglais.
  4. Céline n'a pas eu 9 mais 15 en P.C. dans la console corriger sa note.
  5. Ajouter la SVT pour David, il a eu 20 et 15 dans cette matière.
  6. Faire une fonction moyenne(table,nom_eleve,matiere) qui donne la moyenne de l'élève dans la matière donnée.
  7. Faire une fonction moyenne_generale(table,nom_eleve) qui donne la moyenne générale de l'élève.
  8. Faire une fonction moyenne_classe(table,matiere) qui donne la moyenne des élèves dans la matière donnée.
Exercice

Fred veut faire une mini base de données de ses livres, pour cela il fait la structure suivante :


		
  1. Quel est le type de :
    • auteurs.
    • auteurs["Hugo"].
    • auteurs["Hugo]["Prenom"].
    • auteurs["Hugo]["Livres"].
    • auteurs["Hugo]["Naissance"]
    • auteurs["Hugo]["Livres"][0]
  2. Donnez, sans taper l'instruction :
    • len(auteurs).
    • len(auteurs[Hugo])
    • len(auteurs[Hugo][Livres])
    • len(auteurs[Hugo][Livres][0]).
  3. Directement dans la console et en une ligne trouver :
    • Si Colette est dans sa bibliothèque.
    • Le prénom de Zola.
    • L'année de naissance de Camus.
    • Les livres de Racines.
    • L'année de mort de Corneille.
    • Le nombre de livre de molière que possède Fred.
    • Le prénom de Molière.
  4. Faire une fonction age(table,nom) qui donne l'age de la mort d'un des auteurs de sa collection.
  5. Faire une fonction somme_livres(table) qui donne le nombre total de romans de Fred.
  6. Faire une fonction plus_jeune(table) qui retourne l'auteur qui est mort le plus jeune. La fonction est assez dure, vous devez retenir deux choses, le nom et l'age de l'auteur le plus jeune et au début commencer avec l'age du plus jeune de 1000 ans.
  7. Faire une fonction vivant(table,annee) qui retourne les auteurs vivant à un moment de cette année.
Exercices
Clicker pour ouvrir ou fermer.

On donne deux dictionnaires, le premier associe aux régions ses départements et le deuxiéme à un département son numéro.

  1. Donner le nombre de régions.
  2. Donner les départements du Grand Est.
  3. Faire une fonction qui à un nom de région retourne le nombre de département.
  4. Faire une fonction qui retourne la région qui a le plus de département.
  5. Faire une fonction qui a un département associe la région.
  6. Faire une fonction qui a une région retourne les numéros des départements.
  7. Faire une fonction qui a un numéro de département associe la région.
  8. Faire une fonction qui demande deux département et qui répond True si les deux département sont dans la même région et False sinon.
Solution des fonctions
Exercices

Nous allons faire de la cryptographie et plus précisément faire de la substitution monalphabétique.

  1. Créer un dictionnaire dic qui a chaque lettre de l’alphabet associe une autre lettre, par exemple dic['a'] = 'e'. Vous n'êtes pas obligé de faire toutes les lettres (dans ce cas les lettres non présentes resterons inchangées) par contre il est important que seul un caractère soit associée à un autre (par exemple si dic['a'] = 'e' on ne peut avoir dic['b'] = 'e' et 'e' doit être une clef du dictionnaire. Vous pouvez aussi vous occuper des caractères spéciaux (' ', '.','?', etc)
  2. Créer une fonction monoalphabetique(texte,clef_secrete) qui prend une chaîne de caractère texte et une clef_secrete (qui sera dic), puis qui va retourner le texte crypté à l'aide de la clef_secrete. Par exemple si le dictionnaire est dic = {'b':'o','o':'b'} alors monoalphabetique("bonjour",dic) = "obnjbur". Partez de la chaîne vide "" puis pour chaque caractere du texte clair ajouter la version cryptée.
  3. Créer une fonction inverse_clef(clef_secrete) qui retourne un dictionnaire qui inverse la clef secrète. Par exemple inverse_clef({'a':'b','b':'e','e':'a','g':'m','m':'g'}) est {'a':'e','b':'a','e':'b','g':'m','m':'g'}.
  4. Faire une fonction qui decode(texte,clef_secrete) qui décode le message crypte.
Solution crypto