You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

148 lines
3.0 KiB

  1. Chapitre 8 - Dictionnaires
  2. ==========================
  3. Définition
  4. ----------
  5. Un dictionaire est une *association* entre des clés et des valeurs.
  6. * Les clés sont uniques
  7. * Les valeurs sont arbitraires
  8. Création de dictionnaires
  9. -------------------------
  10. Avec des accolades: ``{``, ``}`` ::
  11. dictionaire_vide = {}
  12. une_clé_une_valeur = {"a": 42}
  13. deux_clés_deux_valeurs = {"a": 42, "b": 53}
  14. Note: tous les dictionnaires sont truthy, sauf les dictionnaires vides.
  15. Accès aux valeurs
  16. ------------------
  17. Avec ``[]``, comme pour les listes, mais avec une *clé* à la place d'un *index*::
  18. scores = {"john": 10, "bob": 42}
  19. print(scores["john"])
  20. # affiche: 10
  21. print(scores["bob"])
  22. # affiche: 42
  23. print(scores["charlie"])
  24. # erreur: KeyError
  25. Test d'appartenance
  26. ---------------------
  27. Avec ``in``, comme le listes::
  28. scores = {"john": 10, "bob": 42}
  29. print("charlie" in scores)
  30. # affiche: False
  31. Modifier la valeur d'une clé
  32. -----------------------------
  33. Comme pour les listes, avec une assignation::
  34. scores = {"john": 10, "bob": 42}
  35. scores["john"] = 20
  36. print(scores)
  37. # affiche: {"john": 20, "bob": 42}
  38. Créer une nouvelle clé
  39. -----------------------
  40. Même mécanisme que pour la modification des clés existantes::
  41. scores = {"john": 10, "bob": 42}
  42. scores["charlie"] = 30
  43. print(scores)
  44. # affiche: {"john": 20, "bob": 42, "charlie": 30}
  45. *rappel*: ceci ne fonctionne pas avec les listes: on ne peut
  46. pas "créer" de nouveaux éléments dans la liste juste
  47. avec un index::
  48. ma_liste = ["a", "b"]
  49. ma_liste[1] = "c"
  50. print(ma_liste)
  51. # affiche: ["a", "c"]
  52. ma_liste[3] = "d"
  53. # erreur: IndexError
  54. Itérer sur les clés
  55. -------------------
  56. Avec ``for ... in ...``, comme pour les listes::
  57. scores = {"john": 10, "bob": 42}
  58. for nom in scores:
  59. # on assigne la valeur "john" à la variable `nom`, puis "bob"
  60. score_associé_au_nom = scores[nom]
  61. # on assigne la valeur 10 puis la valeur 42 à la variable
  62. # score_associé_au_nom
  63. print(nom, score_associé_au_nom)
  64. .. code-block::
  65. john 10
  66. bob 42
  67. del
  68. ---
  69. Détruire une clé
  70. +++++++++++++++++
  71. Avec ``del`` - un nouveau mot-clé::
  72. scores = {"john": 10, "bob": 42}
  73. del scores["bob"]
  74. print(scores)
  75. # affiche: {"john": 10}
  76. Détruire un élément d'une liste
  77. ++++++++++++++++++++++++++++++++
  78. Aussi avec ``del``::
  79. fruits = ["pomme", "banane", "poire"]
  80. del fruits[1]
  81. print(fruits)
  82. # affiche: ["pomme", "poire"]
  83. Détruire une variable
  84. +++++++++++++++++++++
  85. Encore et toujours ``del``::
  86. mon_entier = 42
  87. mon_entier += 3
  88. print(mon_entier)
  89. # affiche: 45
  90. del mon_entier
  91. mon_entier += 1
  92. # erreur: NameError
  93. Comparaisons de dictionaires
  94. -----------------------------
  95. Deux dictionaires sont considérés égaux s'ils ont les mêmes clés
  96. et les mêmes valeurs. L'ordre n'importe pas::
  97. {"a":1, "b":2} == {"a":1, "b":2} # True
  98. {"a":1, "b":2} == {"b":2, "a":1} # True
  99. {"a":1, "b":2} == {"a":1, "b":3} # False