• Keine Ergebnisse gefunden

Exemple 2 : Effectuer des opérations sur les listes Concaténation de listes

1.9. Etude des objets « dictionnaire »

Dans une conception pythonienne, un dictionnaire (encore appelé bibilothèque) est une collection d’objets (généralement des listes, des tuples, des array) définie sur la base clé-valeur. Contrairement aux listes, les tuples ou les array dans lesquels les éléments sont identifiés à partir de leur indice, dans un dictionnaire, les éléments sont identifiés à travers des clés (qui se présente généralement sous forme de chaîne de caractère). Par ailleurs, comme on peut s’attendre, un dictionnaire est une collection d’objets plus générale qui peut inclure à la fois des listes, des tuples ou des array.

Dans cette section, nous allons passer en revue quelques-unes des propriétés des objets dictionnaire.

1.9.1. Définition d’un dictionnaire

66 Un dictionnaire (ou bibliothèque) est une collection d’objets formée de couples clé-valeur séparés par des virgules, l’ensemble spécifiée à l’intérieur des accolades. Les exemples ci-dessous montrent quelques définitions de dictionnaires

x= {'nom':'Jean', 'age':25, 'poids':70, 'taille':1.75}

y= {'Jean':[25,70,1.75],'Paul':[30,65,1.80],'Pierre':[35,75,1.65] } z= {'Jean':(25,70,1.75),'Paul':(30,65,1.80),'Pierre':(35,75,1.65) } k={'nom':'Jean','biométrie':[25,70,1.75],'score':(12,17,15),'rang':25}

Les quatre variables ci-dessus représentent quatre manières typiques de définition d’un dictionnaire.

La variable x est un dictionnaire dont les clés sont nom, age, poids et taille. Les valeurs correspondantes sont Jean, 25, 70 et 1.75. Remarquons simplement que dans cette définition de x, à chaque clé correspond une valeur unique telle la définition d’une variable simple.

Toutefois, il arrive très fréquemment d’associer plusieurs valeurs à une seule clé. C’est le cas de la variable y. En effet, pour cette variable, les clés sont Jean, Paul, et Pierre. Et on associe à chacune de ces clés trois valeurs se présentant sous forme de listes correspondant respectivement à l’âge, le poids et la taille. Quant à la variable z, elle se présente comme la variable y à la seule différence que les valeurs sont spécifiées sous formes de tuples.

Enfin, concernant la variable k, sa structure démontre qu’un dictionnaire peut être constitué de plusieurs types d’objets. En effet, à la clé nom correspond une seule valeur (Jean). Il s’agit d’une variable simple. Pour la clé biométrie, les valeurs correspondantes sont spécifiées sous forme de liste (représentant respectivement l’âge, le poids et la taille), pour la clé score correspond également trois valeurs mais spécifiée sous forme de tuples (représentant les scores obtenus par Jean à trois évaluation successives) et pour la clé rang, on a une valeur unique numérique représentant le rang de Jean à la suite des trois examens qu’il a passés.

Tous ces exemples montrent donc la généralité des objets dictionnaires par rapport aux autres objets tels que les listes, les tuples, les arrays, etc…

1.9.2. Accéder aux éléments d’un dictionnaire (slicing)

Pour accéder aux éléments d’un dictionnaire on se sert des clés. Toutefois la méthode de slicing diffère selon que la clé soit constituée d’une valeur unique ou de plusieurs valeurs comme une liste, tuples, etc…

1.9.2.1. Slicing d’un dictionnaire dans le cas d’une clé à valeur unique

Soit le dictionnaire défini comme suit :

x= {'nom':'Jean', 'age':25, 'poids':70, 'taille':1.75}

Les clés de x étant définies par des valeurs uniques, on peut faire les slicing suivants

67 x['nom'] # renvoie Jean

x['age'] # renvoie 25 x['taille'] # renvoie 1.75

Pour faire du slicing dans le cas d’un dictionnaire dont les clés sont à valeur unique, il suffit d’indiquer la clé dans l’opérateur de slicing [ ] à l’image des listes ou tuples pour lesquelles il faut indiquer les indices.

1.9.2.2. Slicing d’un dictionnaire dans le cas d’une clé à plusieurs valeurs

Dans le cas d’un dictionnaire dont les clés sont à valeur multiples, on distingue deux situations : les slicing de premier niveau et les slicing de second niveau. Dans le premier cas, on accède à l’ensemble des éléments qui correspondent à la clé et dans le second cas, on accède à un élément particulier de l’ensemble qui forme la clé. Les exemples ci-dessous sont des illustrations.

Soit le dictionnaire x défini comme suit :

x= {'Jean':[25,70,1.75],'Paul':[30,65,1.80],'Pierre':[35,75,1.65] } On peut faire des slicing suivants :

x['Jean'] #renvoie [25, 70, 1.75]

x['Jean'][0] #renvoie 25

x['Jean'][0 :2] #renvoie [25, 70]

Ces exemples montrent que pour accéder aux sous-éléments il faut ajouter à la clé un opérateur de slicing supplémentaire dont les arguments sont, cette fois, les indices des éléments dans la séquence de valeurs correspondant à la clé.

1.9.3. Modification de dictionnaire : ajout et suppression de clés ou de valeurs

On peut modifier un dictionnaire soit en modifiant les clés et les valeurs déjà existantes ou en ajouter des nouvelles. On peut également supprimer des valeurs mais aussi des clés. Les exemples ci-dessous illustrent ces cas.

1.9.3.1. Ajout ou modification de clés ou de valeurs

Soit le dictionnaire vide x défini comme suit :

x= {} # Crée un dictionnaire vide. On pouvait aussi utiliser x=dict() On va ajouter des clés et des valeurs à x et essayer d’apporter des modifcations au dictionnaire

68 x['nom'] = 'Jean' # ajoute la clé-valeur nom et Jean au dictionnaire x initial

x['biométrie']= [25,70,1.75] # ajoute la clé-valeur biométrie et [25,70,1.75] au dictionnaire x

x['biométrie']= [30,70,1.80] # modifie les valeurs de la clé biométrie en effectuant une nouvelle définition

x['biométrie'][0]= 2 # modifie l’élément d’indice 0 de la liste de valeur qui correspond à la clé biométrie (préalabelemnt définie)

1.9.3.2. Suppression de clés ou de valeurs dans un dictionnaire

Il est possible de supprimer des clés ou des valeurs dans un dictionnaire. Les exemples ci-dessous sont des illustrations.

Soit le dictionnaire x défini comme suit :

x= {'Jean':[25,70,1.75],'Paul':[30,65,1.80],'Pierre':[35,75,1.65] } On peut faire des opérations de suppression suivantes :

del x['Jean'] # Supprime la clé Jean toutes les valeurs correspondantes

del x['Jean'][0] # Supprime l’élément d’indice 0 dans la séquence de valeur correspondant à la clé Jean. Pour une clé à une seule valeur, on utilise del x['nomCle'] où nomCle est le nom de la clé qui a la valeur unique.

1.9.4. Renommer une clé dans un dictionnaire

Pour renommer une clé dans un dictionnaire, on utilise la fonction pop() telle que définie dans l’exemple suivant :

Soit le dictionnaire x défini comme suit :

x= {'Jean':[25,70,1.75],'Paul':[30,65,1.80],'Pierre':[35,75,1.65] }

On souhaite renommer la clé Jean comme John. Alors on utilise la méthode de renommage comme suit :

x['John']=x.pop('Jean')

1.9.5. Tester l’existence d’une clé dans un dictionnaire : la fonction in

Pour vérifier si une clé existe dans un dictionnaire, on utilise la fonction in qui renvoie une valeur booléenne (True ou False) selon que la clé existe ou pas dans la liste. Exemple : soit le dictionnaire x définir par :

69 x= {'Jean':[25,70,1.75],'Paul':[30,65,1.80],'Pierre':[35,75,1.65] }

On peut faire des tests d’existence suivants :

'Paul' in x # renvoie True (car il y a bien Paul parmi les clés de x) 'Sebastien' in x # renvoie False

'Sebastien' not in x # renvoie True 'Jean' not in x # renvoie False

Nb : Encore une fois, la fonction « in » peut s’avérer utile dans de nombreuses situations. Elle peut par exemple servir dans la définition des instructions conditionnelles sur les clés en l’associant avec la clause « if ». Exemple :

if 'Paul' in x :

print("Oui, Paul est bien une clé dans le dictionnaire x") else :

print("Non, Paul n’est pas une clé dans le dictionnaire x")

1.9.6. Récupérer les clés ou les valeurs d’un dictionnaire (les fonctions keys() et values())

Dans de nombreuses situations, il arrive qu’on ait besoin de récupérer les clés ou les valeurs d’un dictionnaire pour d’autres utilisations dans le programme (ex : constituer des listes, ou des tuples, etc…). Dans ces cas, on doit d’abord récupérer les clés et les valeurs. Pour cela, on utilise les fonction keys() et values().

La fonction keys() renvoie les clés d’un dictionnaire alors que la fonction values renvoie les valeurs. Les exemples ci-dessous montrent comment utiliser ces deux fonctions.

Soit le dictionnaire x défini comme suit :

x= {'Jean':[25,70,1.75],'Paul':[30,65,1.80],'Pierre':[35,75,1.65] } On peut récupérer les clés et les valeurs comme suit :

myKeys=x.keys() # renvoie dict_keys(['Pierre', 'Paul', 'Jean'])

myValues=x.values() # renvoie dict_values([[35, 75, 1.65], [30, 65, 1.8], [25, 70, 1.75]])

Signalons alors simplement qu’il est possible de transformer ces objets en objets liste en utilisant la fonction list() comme suit :

myKeysList=list(myKeys) # renvoie ['Pierre', 'Paul', 'Jean']

myValuesList=list(myValues) # renvoie [[35, 75, 1.65], [30, 65, 1.8], [25, 70, 1.75]]