Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révisionLes deux révisions suivantes |
python:bases:dictionnaires [2021/08/11 17:32] – phil | python:bases:dictionnaires [2022/08/16 08:25] – [6.3 Parcours des valeurs] phil |
---|
[[:python:accueilpython|{{ :iconemaison.jpg?nolink&30|Sommaire Python et microPython}}]] | [[:python:accueilpython|{{ :iconemaison.jpg?nolink&30|Sommaire Python et microPython}}]] |
| |
===== Les dictionnaires ===== | ===== Python - Dictionnaires ===== |
| |
[Mise à jour le : 30/6/2021] | [Mise à jour le : 16/8/2022] |
{{ :micropython:python.png?nolink&80|}} | |
| |
* **Sources** | * **Sources** |
* **Real Python** | * **Real Python** |
* <html><a href="https://realpython.com/python-ordereddict/" target="_blank">OrderedDict vs dict in Python: The Right Tool for the Job</a></html> | * <html><a href="https://realpython.com/python-ordereddict/" target="_blank">OrderedDict vs dict in Python: The Right Tool for the Job</a></html> |
* <html><a href="https://realpython.com/python-collections-module/" target="_blank">Python's collections: A Buffet of Specialized Data Types</a></html> | * <html><a href="https://realpython.com/sort-python-dictionary/" target="_blank">Sorting a Python Dictionary: Values, Keys, and More</a></html> |
| |
* ** Mots-clés** : dictionnaire, parcours de dictionnaires. | * ** Mots-clés** : dictionnaire, parcours de dictionnaires. |
| |
<note important>Les mots ci-dessous sont dits "réservés". Ils ne peuvent pas être utilisés comme nom de variable. Les mots __soulignés__ sont une nouveauté de Python 3. Les mots en **gras** sont utilisés dans cette page.</note> | <callout type="warning" icon="true">Les mots ci-dessous sont dits "réservés". Ils ne peuvent pas être utilisés comme nom de variable. Les mots __soulignés__ sont une nouveauté de Python 3. Les mots en **gras** sont utilisés dans cette page.</callout> |
| |
| and | continue | finally | **is** | raise | | | and | continue | finally | **is** | raise | |
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 // |