Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
python:bases:dictionnaires [2022/08/16 08:21] – [Python - Dictionnaires] phil | python:bases:dictionnaires [2022/08/16 08:27] (Version actuelle) – [9.2 Un dictionnaire pour indexer les enregistrements] phil |
---|
Le dictionnaire est une implémentation de table de hash. Il permet l'accès, l'insertion et le test d'appartenance indépendamment du nombre d'éléments. Le dictionnaire est un objet conteneur. À la différence des séquences, qui sont indexées par des nombres, les dictionnaires sont indexés par des **clés**, qui peuvent être de n'importe quel type immuable ; les chaînes de caractères et les nombres peuvent toujours être des clés. | Le dictionnaire est une implémentation de table de hash. Il permet l'accès, l'insertion et le test d'appartenance indépendamment du nombre d'éléments. Le dictionnaire est un objet conteneur. À la différence des séquences, qui sont indexées par des nombres, les dictionnaires sont indexés par des **clés**, qui peuvent être de n'importe quel type immuable ; les chaînes de caractères et les nombres peuvent toujours être des clés. |
| |
<note>Les **dictionnaires** sont des objets **mutables**. Leur structure n'est pas ordonnée (ceci est dû à l'action de la fonction de hachage).Les **clés** doivent avoir un **type immuable**.</note> | <callout type="primary" icon="true">Les **dictionnaires** sont des objets **mutables**. Leur structure n'est pas ordonnée (ceci est dû à l'action de la fonction de hachage).Les **clés** doivent avoir un **type immuable**.</callout> |
| |
==== 2. Création ==== | ==== 2. Création ==== |
<note>On utilise l'expression suivante : //nom_dictionnaire// = **dict()** ou //nom_dictionnaire// = **{}** pour créer des dictionnaires vides.</note> | <callout type="primary" icon="true">On utilise l'expression suivante : //nom_dictionnaire// = **dict()** ou //nom_dictionnaire// = **{}** pour créer des dictionnaires vides.</callout> |
| |
//Exemples// | //Exemples// |
</code> | </code> |
| |
<note>Les **accolades** délimitent les **dictionnaires**.</note> | <callout type="primary" icon="true">Les **accolades** délimitent les **dictionnaires**.</callout> |
| |
==== 3. Lecture de la valeur d'un élément ==== | ==== 3. Lecture de la valeur d'un élément ==== |
| |
==== 4. Ajout ou modification d'un élément ==== | ==== 4. Ajout ou modification d'un élément ==== |
<note>Le dictionnaire est un type **mutable**, et donc on peut **modifier la valeur** associée à une clé. On utilise l'expression suivante : //nom_dictionnaire//**[****//clé//****]** = //**valeur**//. Et de la même jaçon, **ajouter une entrée**.</note> | <callout type="primary" icon="true">Le dictionnaire est un type **mutable**, et donc on peut **modifier la valeur** associée à une clé. On utilise l'expression suivante : //nom_dictionnaire//**[****//clé//****]** = //**valeur**//. Et de la même jaçon, **ajouter une entrée**.</callout> |
| |
//Exemples// | //Exemples// |
| |
==== 5. Suppression d'éléments ==== | ==== 5. Suppression d'éléments ==== |
<note>On utilise **del**(//nom_dictionnaire//**[****//clé//****]**) ou //nom_dictionnaire//.**pop**("**clé**"). pop renvoie la valeur.</note> | <callout type="primary" icon="true">On utilise **del**(//nom_dictionnaire//**[****//clé//****]**) ou //nom_dictionnaire//.**pop**("**clé**"). pop renvoie la valeur.</callout> |
| |
<code python *.py> | <code python *.py> |
| |
=== 6.1 Parcours des clés et valeurs simultanément === | === 6.1 Parcours des clés et valeurs simultanément === |
<note>On utilise la méthode **items** de la classe **dict**. Elle renvoie une **liste**, contenant les couples **clé : valeur**, sous la forme d'un tuple.</note> | <callout type="primary" icon="true">On utilise la méthode **items** de la classe **dict**. Elle renvoie une **liste**, contenant les couples **clé : valeur**, sous la forme d'un tuple.</callout> |
| |
<code python *.py> | <code python *.py> |
| |
=== 6.2 Parcours des clés === | === 6.2 Parcours des clés === |
<note>On utilise la méthode **keys**() de la classe **dict**.</note> | <callout type="primary" icon="true">On utilise la méthode **keys**() de la classe **dict**.</callout> |
| |
<code python *.py> | <code python *.py> |
</code> | </code> |
| |
<note>L'itérateur sur les dictionnaires itère directement sur les clés.</note> | <callout type="primary" icon="true">L'itérateur sur les dictionnaires itère directement sur les clés.</callout> |
| |
//Exemple// | //Exemple// |
| |
=== 6.3 Parcours des valeurs === | === 6.3 Parcours des valeurs === |
<note>On utilise la méthode **values**() de la classe **dict**.</note> | <callout type="primary" icon="true">On utilise la méthode **values**() de la classe **dict**.</callout> |
| |
<code python *.py> | <code python *.py> |
</code> | </code> |
| |
| <callout type="tip" icon="true">Les méthodes **keys**(), **values**() et **items**() retournent un objet particulier appelé : **une vue** (itérable et possédant le test d'appartenance). La caractéristique principale d'une vue est qu'elle est **mise à jour** en même temps que le dictionnaire.</callout> |
| |
<note tip>Les méthodes **keys**(), **values**() et **items**() retournent un objet particulier appelé : **une vue** (itérable et possédant le test d'appartenance). La caractéristique principale d'une vue est qu'elle est **mise à jour** en même temps que le dictionnaire.</note> | |
| |
// Exemple // | // Exemple // |
</code> | </code> |
==== 7. Formation d'un dictionnaire à partir de deux listes ==== | ==== 7. Formation d'un dictionnaire à partir de deux listes ==== |
<note>On utilise l'expression suivante : //nom_dictionnaire// = **dict**(**zip**(//listeClés//,//listeVal//))</note> | <callout type="primary" icon="true">On utilise l'expression suivante : //nom_dictionnaire// = **dict**(**zip**(//listeClés//,//listeVal//))</callout> |
| |
//Exemples// | //Exemples// |
</code> | </code> |
| |
<note important>Problème : l'accès à un enregistrement suppose ici que l'on connaisse sa position. | <callout type="warning" icon="true">Problème : l'accès à un enregistrement suppose ici que l'on connaisse sa position. |
</note> | </callout> |
| |
===9.2 Un dictionnaire pour indexer les enregistrements === | ===9.2 Un dictionnaire pour indexer les enregistrements === |
<note tip>Pour modéliser ces informations, il est plus adapté d'utiliser, non pas une liste, mais un **dictionnaire de dictionnaires**.</note> | <callout type="tip" icon="true">Pour modéliser ces informations, il est plus adapté d'utiliser, non pas une liste, mais un **dictionnaire de dictionnaires**.</callout> |
| |
//Exemple// | //Exemple// |