Blog de jodenda

Cours sur les dictionnaires

Définition et propriétés de base

Un dictionnaire en python est un type construit qui se définit par une collection d' items constitué d'une clef (key) associée à une valeur (value).


Syntaxe :

dictionnaire = {}   # dictionnaire vide lors d'une initialisation 
dictionnaire["premier"] = "first"    # crée l'item ("premier" : "first") ou donne la valeur "first" à l'item pré-existant de clef "premier"
print(dictionnaire)   # affiche     {"premier" : "first"}
dictionnaire["second"] = "second"
print(dictionnaire)   # affiche     {"premier" : "first", "second" : "second"}
dictionnaire["Troisième"] = "third"
print(dictionnaire)   # affiche     {"premier" : "first", "second" : "second", "troisième" : "third"}   # trois items# taille du dictionnaire :len(dictionnaire)   affiche ici   3
# modification possible d'un item
dictionnaire["Troisième"] = "3th"
print(dictionnaire)   # affiche     {"premier" : "first", "second" : "second", "troisième" : "3th"}

Méthodes associées à l'objet dict

Trois méthodes permettent de construire des itérateurs sur le dictionnaire :

Les méthodes d'un objet sont des fonctions permettant soit d'obtenir (get) des informations sur l'objet, soit de modifier un ou plusieurs attributs de l'objet.

Trois méthodes sont particulièrement utiles pour accéder aux éléments d'un dictionnaire ; elles permettent de construire un itérateur utilisable dans une boucle for ; un itérateur est une sorte de liste à usage unique

Construction et accès aux items, clefs et valeurs

Un dictionnaire peut se construite par comprehension ; c'est à dire que l'on peut le construire en une seule étape (ligne de code) en écrivant un mini programme entre ses accolades :

Construction classique :

d = dict()  # d = {}   initialisation
liste_clefs = ["un", "deux"]
liste_valeurs = [1,2]
for i in range(len(liste_clefs)) :  
    d[liste_clefs[i]] = liste_valeurs[i]
    print("Le dictionnaire, après l'ajout de l'item ({}:{}) devient {}"
    		.format(liste_clefs[i]] , liste_valeurs[i], d)
		

Construction par comprehension :

liste_clefs = ["un", "deux", "trois"]
liste_valeurs = [1,2,3]	
d = [ liste_clefs[i]] : liste_valeurs[i] for i in range(len(liste_clefs)) ]  # pas d'initialisation préalable !
		

Accès à une valeur par la clef

d["un"] renvoie la valeur 1

d["deux"] renvoie la valeur 2

d["quatre"] est simplement créé comme ceci
d["quatre"] = 4

Accès aux clefs, valeurs et items à l'aide d'une boucle

Accès aux clefs
for clef in d.keys() :
    print("Clef = ", clef)
		
Accès aux valeurs
for valeur in d.values() :
    print("valeur = ", valeur)		
		
Accès aux items
  • Première façon :
    for clef, valeur in d.items() :
        print("(Clef : valeur) = ({}:{}) ". format(clef, valeur)	)	
    		
  • Deuxièm façon :
    for item in d.items() :
        print("(Clef : valeur) = ({}:{}) ". format(item[0], item[1])	)	
    		

TP

Codage de César : coder une fonction qui renvoie le texte en entrée codé par un décalage de n dans l'alphabet.

Outils PYTHON à utiliser

Les fonctions builtins

code = { chr(79 + i) : chr(79 + (i+n)%26)   for i in range(26) }     qu'est ce que cela fait ?

Traducteur automatique :


dic = {"un": "one", "arbre" :"tree"}

texte = "un arbre"

mots = texte.split(' ')
Traduire le texte mot à mot
Solution proposée

words = []
for mot in mots :
    words.append(dic[mot])
text = " ".join(words)   # concatène les éléments de words en les séparant par un " "
On obtient : "one tree"