{ "cells": [ { "cell_type": "markdown", "id": "bb1cfae9", "metadata": {}, "source": [ "## Représentation des données : Les Dictionnaires " ] }, { "cell_type": "markdown", "id": "c09a37ee", "metadata": {}, "source": [ "-------------" ] }, { "cell_type": "markdown", "id": "38d1e9f4", "metadata": {}, "source": [ "> ***Contenue*** : Notions introduites : le type dictionnaire\n", "\n", "> ***Compétences*** : Construire une entrée de dictionnaire, savoir itérer sur es élèments d'un dictionnaire, connaître les méthodes." ] }, { "cell_type": "markdown", "id": "0beaa407", "metadata": {}, "source": [ "## Le programme" ] }, { "cell_type": "markdown", "id": "dcbf1fd3", "metadata": {}, "source": [ "-----" ] }, { "cell_type": "markdown", "id": "57421c29", "metadata": {}, "source": [ "![bo_tuple](../assets/bo_dico.png)" ] }, { "cell_type": "markdown", "id": "401edcc8", "metadata": {}, "source": [ "## Apport de connaissances" ] }, { "cell_type": "markdown", "id": "717cce94", "metadata": {}, "source": [ "--------" ] }, { "cell_type": "markdown", "id": "0fc298dc", "metadata": {}, "source": [ "Les dictionnaires Python permettent d'associer des valeurs à des clés : À partir d'une clé, on peut alors accéder directement à la valeur qui lui est associée." ] }, { "cell_type": "markdown", "id": "607fa703", "metadata": {}, "source": [ "### Propriétés" ] }, { "cell_type": "markdown", "id": "9e023220", "metadata": {}, "source": [ "Les dictionnaires sont des conteneurs, comme les listes et tuples, vus précédemment, et sont mutables : *on peut donc modifier, ajouter ou supprimer du contenu.*\n", "\n", "Par contre, contrairement aux types de conteneurs précédémment étudiés, on ne peut pas accéder au contenu d'un dictionnaire à l'aide d'un indice : un dictionnaire n'est pas une séquence.\n", "\n", "Si on peut bien modifier les valeurs dans un dictionnaire, chaque clé est *unique et non mutable*. Elle peut être une chaîne de caractères, un nombre, un tulle de nombre...\n", "\n", "Enfin, les valeurs, quant à elles, peuvent être quelconques." ] }, { "cell_type": "markdown", "id": "555ca300", "metadata": {}, "source": [ "------" ] }, { "cell_type": "markdown", "id": "21761a39", "metadata": {}, "source": [ "### Création et accès" ] }, { "cell_type": "markdown", "id": "e219df29", "metadata": {}, "source": [ "Pour initialiser un dictionnaire vide : " ] }, { "cell_type": "code", "execution_count": 1, "id": "09f0144b", "metadata": {}, "outputs": [], "source": [ "dico = {}\n", "#ou\n", "dico = dict()" ] }, { "cell_type": "markdown", "id": "766eeca7", "metadata": {}, "source": [ "Pour initialiser un dictionnaire avec des valeurs :" ] }, { "cell_type": "code", "execution_count": 3, "id": "8523655d", "metadata": {}, "outputs": [], "source": [ "perso = {\"prenom\" : \"Bilbo\", \"age\" : 111}" ] }, { "cell_type": "markdown", "id": "7f350ef3", "metadata": {}, "source": [ "On a donc la clé en premier, ici, prenom & age sont deux chaines de caractères faisant office de clés.\n", "\n", "Accéder à une valeur d'un dictionnaire : on donne la clé à laquelle est associée la valeur recherchée (il faut donc que la clé existe)" ] }, { "cell_type": "code", "execution_count": 5, "id": "c1124575", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Bilbo'" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "perso [\"prenom\"]\n", "'Bilbo'" ] }, { "cell_type": "code", "execution_count": 6, "id": "094043d5", "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "'taille'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/var/folders/nb/7k573f_13zj2tnc5xd0020l40000gn/T/ipykernel_27744/399847934.py\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mperso\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"taille\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mKeyError\u001b[0m: 'taille'" ] } ], "source": [ "perso[\"taille\"]" ] }, { "cell_type": "markdown", "id": "a29f8a7f", "metadata": {}, "source": [ "Tout comme les listes, on peut utiliser la fonction ***len*** pour connaître le nombre de couples stockés." ] }, { "cell_type": "code", "execution_count": 7, "id": "1e8c5e32", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(perso)" ] }, { "cell_type": "markdown", "id": "865d51b5", "metadata": {}, "source": [ "-----" ] }, { "cell_type": "markdown", "id": "a1984b3d", "metadata": {}, "source": [ "### Modification et parcours" ] }, { "cell_type": "markdown", "id": "dfd2f41e", "metadata": {}, "source": [ " On ajoute très simplement un couple clé / valeur :" ] }, { "cell_type": "code", "execution_count": 8, "id": "24211303", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'prenom': 'Bilbo', 'age': 111, 'taille': 112}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "perso [\"taille\"] = 112\n", "perso" ] }, { "cell_type": "markdown", "id": "24fbdfae", "metadata": {}, "source": [ " Pour modifier une valeur, c'est la même méthode : on ajoute un couple deja existant, et cela va écraser la valeur précédente :" ] }, { "cell_type": "code", "execution_count": 9, "id": "83ad4a74", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'prenom': 'Bilbo', 'age': 131, 'taille': 112}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "perso[\"age\"] = 131\n", "perso" ] }, { "cell_type": "markdown", "id": "4fa255d5", "metadata": {}, "source": [ "Pour supprimer une clé et sa valeur associée, on peut utiliser la fonction ***del***:" ] }, { "cell_type": "code", "execution_count": 12, "id": "fc43064d", "metadata": {}, "outputs": [], "source": [ "del perso[\"age\"]" ] }, { "cell_type": "markdown", "id": "c9021bee", "metadata": {}, "source": [ "------" ] }, { "cell_type": "markdown", "id": "225cf727", "metadata": {}, "source": [ "Comme les listes et les tuples, les dictionnaires sont intérables : on itère sur les clés, les valeurs, ou les couples clé / valeur\n", "\n", "- Itération sur les clés :" ] }, { "cell_type": "code", "execution_count": 14, "id": "2be77c4a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "prenom\n", "taille\n" ] } ], "source": [ "for cle in perso.keys():\n", " print (cle)" ] }, { "cell_type": "markdown", "id": "6a0ddd68", "metadata": {}, "source": [ "- Itération sur les valeurs :" ] }, { "cell_type": "code", "execution_count": 15, "id": "534dbdba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Bilbo\n", "112\n" ] } ], "source": [ "for val in perso.values():\n", " print(val)" ] }, { "cell_type": "markdown", "id": "d77a9b92", "metadata": {}, "source": [ "- Itération sur les couples clé / valeur:" ] }, { "cell_type": "code", "execution_count": 16, "id": "21a715ba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "prenom -> Bilbo\n", "taille -> 112\n" ] } ], "source": [ "for (cle, val) in perso.items():\n", " print(cle, \"->\", val)" ] }, { "cell_type": "markdown", "id": "222e7ae8", "metadata": {}, "source": [ "✏ Par défaut, on itère sur les clés." ] }, { "cell_type": "markdown", "id": "c310b73d", "metadata": {}, "source": [ "### À retenir" ] }, { "cell_type": "markdown", "id": "65893b5c", "metadata": {}, "source": [ "| Opération | Résultat |\n", "| ---------------------- | ------------------------------------------------------------ |\n", "| dico[k] | renvoie la valeur associée à la clé k |\n", "| x in dico.values() | renvoie True si une valeur de dico est égale à x, False sinon |\n", "| x not in dico.values() | renvoie True si aucune valeur de dico n'est égale à x, False sinon |\n", "| x in dico.keys() | renvoie True si une clé de dico est égale à x, False sinon |\n", "| dico[k] = v | Modifie la valeur v associée à la clé k ou l'ajoute si elle n'existe pas |\n", "| dico.get(k, v) | Renvoie la valeur associé à la clé k. Si la clé k n'existe pas, renvoie la valeur v |\n", "| del dico(k) | Enlève du dictionnaire la clé k |" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 5 }