Parcourir un dictionnaire☘
Attention
Il n'y a pas d'ordre dans un dictionnaire.
Le parcours d'un dictionnaire ne se fera pas nécessairement dans l'ordre
dans lequel les associations « clef: valeur » ont été entrées,
ni dans un quelconque autre ordre.
Parcours par les clefs☘
On parcourt les clefs d'un dictionnaire nommé dico
avec
for ... in dico.keys()
:
>>> d = {'chemise': 4, 'pantalon': 2, 'short': 3}
>>> for clef in d.keys():
... print(clef, d[clef])
...
chemise 4
pantalon 2
short 3
Remarque importante
On pourrait, comme avec un tuple ou un tableau, utiliser l'instruction suivante :
>>> d = {'chemise': 4, 'pantalon': 2, 'short': 3}
>>> for clef in d:
... print(clef, d[clef])
...
chemise 4
pantalon 2
short 3
for ... in ...
parcourt les valeurs, pas les indices.Le comportement peut donc tromper dans le cas des dictionnaires et il est conseillé d'utiliser la méthode
.keys()
.
Parcours par les valeurs☘
Pour parcourir les valeurs d'un dictionnaire, on utilise la méthode .values()
à la place de .keys()
:
>>> d = {'chemise': 4, 'pantalon': 2, 'short': 3}
>>> for valeur in d.values():
... print(valeur)
...
4
2
3
Parcours par les clefs et les valeurs☘
On peut obtenir les associations « clef: valeur » avec la méthode
.items()
:
>>> d = {'chemise': 4, 'pantalon': 2, 'short': 3}
>>> for clef, valeur in d.items():
... print(clef, valeur)
...
chemise 4
pantalon 2
short 3
Exemple☘
Définir la fonction compte_carac()
qui prend en paramètre une chaîne de
caractères et qui renvoie un dictionnaire dont les clefs sont les caractères
distincts de la chaîne et les valeurs associées sont les occurrences de ces
caractères dans la chaîne.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
Une aide
Contrairement à l'exemple sur les voyelles,
les clefs dépendent cette fois-ci du paramètre.
On ne peut donc pas définir a priori les clefs du dictionnaire.
On procédera selon l'algorithme suivant :
dico = {}
Pour chaque caractère du texte:
Si le caractère n'est pas encore une clef :
dico[clef] = 1
Sinon :
incrémenter dico[clef]
Une solution
def compte_carac(texte):
"""
texte – str, chaîne de caractères
Sortie: dict – clefs, les caractères distinct de texte
valeurs, occurrence des clefs dans texte
>>> compte_carac('exemple')
{'e': 3, 'x': 1, 'm': 1, 'p': 1, 'l': 1}
"""
nb_carac = {}
for caractere in texte:
if caractere not in nb_carac.keys():
nb_carac[caractere] = 1
else:
nb_carac[caractere] += 1
return nb_carac
##----- Tests et Programme Principal -----##
if __name__ == '__main__':
import doctest
doctest.testmod()
# test supplémentaire
# extrait de https://histoire-informatique.org/
Lee = """
Tim BERNERS-LEE (jun 1955-)
Afin d'aider à la diffusion des informations,
ce chercheur du CERN de Genève a mis au point, en 1990, le World Wide Web.
Il est à l'origine de standards parmi les plus utilisés comme HTTP, URL, et le langage HTML.
"""
print(compte_carac(Lee))