« Programmation Python/Dictionnaires » : différence entre les versions

Contenu supprimé Contenu ajouté
Pas besoin du mot "def" pour comprendre les dictionnaires
Ligne 7 :
 
== Création d'un dictionnaire ==
 
Ajout d'une occurrence à la pile :
<source lang=python>
>>> tel = {'jack': 4098, 'sape': 4139}
>>> tel['guido'] = 4127
>>> tel
{'sape': 4139, 'guido': 4127, 'jack': 4098}
</source>
 
Sortie d'un élément de la pile :
<source lang=python>
>>> tel['jack']
4098
</source>
 
Suppression et ajout d'un élément
<source lang=python>
>>> del tel['sape']
>>> tel['irv'] = 4127
>>> tel
{'guido': 4127, 'irv': 4127, 'jack': 4098}
</source>
 
Sortie des clés
<source lang=python>
>>> tel.keys()
['guido', 'irv', 'jack']
>>> tel.has_key('guido')
1
</source>
 
A titre d'exemple, nous allons créer un dictionnaire de langue, pour la traduction de termes informatiques anglais en français. Dans ce dictionnaire, les index seront des chaînes de caractères.
 
Ligne 60 ⟶ 29 :
</pre>
 
Contrairement à ce qui se passe avec les listes, il n'est pas nécessaire de faire appel à une méthode particulière (telle que <code>append()</code>) pour ajouter de nouveaux éléments à un dictionnaire : il suffit de créer une nouvelle paire clé-valeur.
 
== Opérations sur les dictionnaires ==
Vous savez déjà comment ajouter des éléments à un dictionnaire. Pour en enlever, vous utiliserez l'instruction <code>del</code>. Créons pour l'exemple un autre dictionnaire, destiné cette fois à contenir l'inventaire d'un stock de fruits. Les index (ou clés) seront les noms des fruits, et les valeurs seront les masses de ces fruits répertoriées dans le stock (il s'agit donc cette fois de valeurs de type numérique).
 
Vous savez déjà comment ajouter des éléments à un dictionnaire. Pour en enlever, vous utiliserez l'instruction <code>del</code>. Créons pour l'exemple un autre dictionnaire, destiné cette fois à contenir l'inventaire d'un stock de fruits. Les index (ou clés) seront les noms des fruits, et les valeurs seront les masses de ces fruits répertoriées dans le stock (il s'agit donc cette fois de valeurs de type numérique).
 
<pre>
Ligne 81 ⟶ 49 :
 
La fonction <code>len()</code> est utilisable avec un dictionnaire : elle en renvoie le nombre d'éléments.
 
== Les dictionnaires sont des objets ==
 
Ligne 289 ⟶ 257 :
Dans le dictionnaire, le nom de l'élève servira de clé d'accès, et les valeurs seront constituées de tuples (âge, taille), dans lesquels l'âge sera exprimé en années (donnée de type entier), et la taille en mètres (donnée de type réel).
 
La fonction de consultation comportera elle aussi une boucle, dans laquelle l'utilisateur pourra fournir un nom quelconque pour obtenir en retour le couple « âge, taille » correspondant. Le résultat de la requête devra être une ligne de texte bien formatée, telle par exemple : « Nom : Jean Dhoute - âge : 15 ans - taille : 1.74 m ». Pour obtenir ce résultat, servez-vous du formatage des chaînes de caractères décrit à la page todo.</li>
 
<li>Écrivez une fonction qui échange les clés et les valeurs d'un dictionnaire (ce qui permettra par exemple de transformer un dictionnaire anglais/français en un dictionnaire français/anglais).
Ligne 299 ⟶ 267 :
<li>
<source lang=python>
#!/usr/bin/env python
#Création et consultation d'un dictionnaire
# coding: utf-8
def consultation():
while 1:
nom = raw_input("Entrez le nom (ou <enter> pour terminer) : ")
if nom == "":
break
if dico.has_key(nom): # le nom est-il répertorié ?
item = dico[nom] # consultaion proprement dite
age, taille = item[0], item[1]
print "Nom : %s - âge : %s ans - taille : %s m."\
% (nom, age, taille)
else:
print "*** nom inconnu ! ***"
 
# Création et consultation d'undu dictionnaire
def remplissage():
while 1:
nom = raw_input("Entrez le nom (ou <enter> pour terminer) : ")
if nom == "":
break
age = int(raw_input("Entrez l'âge (nombre entier !) : "))
taille = float(raw_input("Entrez la taille (en mètres) : "))
dico[nom] = (age, taille)
dico ={}
while 1:
Ligne 327 ⟶ 276 :
if choix.upper() == 'T':
break
 
elif choix.upper() == 'R':
nom = raw_input("Entrez le nom (ou <enter> pour terminer) : ")
remplissage()
if nom == "":
break
age = int(raw_input("Entrez l'âge (nombre entier !) : "))
taille = float(raw_input("Entrez la taille (en mètres) : "))
dico[nom] = (age, taille)
 
elif choix.upper() == 'C':
# Consultation
consultation()
nom = raw_input("Entrez le nom (ou <enter> pour terminer) : ")
if nom == "":
break
if dico.has_key(nom): # le nom est-il répertorié ?
item = dico[nom] # consultaionconsultation proprement dite
age, taille = item[0], item[1]
print "Nom : %s - âge : %s ans - taille : %s m."\
% (nom, age, taille)
else:
print "*** nom inconnu ! ***"
</source>
</li>