Les dictionnaires python

Un dictionnaire en python est une sorte de liste mais au lieu d'utiliser des index, on utilise des clés, c'est à dire des valeurs autres que numériques.

Comment créer un dictionnaire?

Pour initialiser un dictionnaire, on utile la syntaxe suivante:

>>> a = {}

Comment ajouter des valeurs dans un dictionnaire?

Pour ajouter des valeurs à un dictionnaire il faut indiquer une clé ainsi qu'une valeur:

>>> a = {}
>>> a["nom"] = "engel"
>>> a["prenom"] = "olivier"
>>> a
{'nom': 'engel', 'prenom': 'olivier'}

Vous pouvez utiliser des clés numériques comme dans la logique des listes.

Récupérer une valeur dans un dictionnaire

La méthode get vous permet de récupérer une valeur dans un dictionnaire et si la clé est introuvable, vous pouvez donner une valeur à retourner par défaut:

>>> data = {"name": "Olivier", "age": 30}
>>> data.get("name")
'Olivier'
>>> data.get("adresse", "Adresse inconnue")
'Adresse inconnue'

Vérifier la présence d'une clé dans un dictionnaire

Vous pouvez utiliser la méthode haskey pour vérifier la présence d'une clé que vous cherchez:

>>> a.has_key("nom")
True

Supprimer une entrée de dictionnaire

Il est possible de supprimer une entrée en indiquant sa clé, comme pour les listes:

>>> del a["nom"]
>>> a
{'prenom': 'olivier'}

Récupérer les clés par une boucle

Pour récupérer les clés on utilise la méthode keys

>>> fiche = {"nom":"engel","prenom":"olivier"}
>>> for cle in fiche.keys():
...     print cle
... 
nom
prenom

Récupérer les valeurs par une boucle

Pour cela on utilise la méthode values

>>> fiche = {"nom":"engel","prenom":"olivier"}
>>> for valeur in fiche.values():
...     print valeur
... 
engel
olivier

Récupérer les clés et les valeurs par une boucle

Pour récupérer les clés et les valeurs en même temps, on utilise la méthode items qui retourne un tuple.

>>> fiche = {"nom":"engel","prenom":"olivier"}
>>> for cle,valeur in fiche.items():
...     print cle, valeur
... 
nom engel
prenom olivier

Utiliser des tuples comme clé

Une des forces de python est la combinaison tuple/dictionnaire qui fait des merveilles dans certains cas comme lors de l'utilisation de coordonnées.

>>> b = {}
>>> b[(3,2)]=12
>>> b[(4,5)]=13
>>> b
{(4, 5): 13, (3, 2): 12}

Créer une copie indépendante d'un dictionnaire

Comme pour toute variable, vous ne pouvez pas copier un dictionnaire en faisant dic1 = dic2:

>>> d = {"k1":"olivier", "k2":"engel"}
>>> e = d
>>> d["k1"] = "XXX"
>>> e
{'k2': 'engel', 'k1': 'XXX'}

Pour créer une copie indépendante vous pouvez utiliser la méthode copy:

>>> d = {"k1":"olivier", "k2":"engel"}
>>> e = d.copy()
>>> d["k1"] = "XXX"
>>> e
{'k2': 'engel', 'k1': 'olivier'}