|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- +++
- title = "Dictionnaires"
- weight = 1
- +++
-
- # Dictionnaires
-
- ## Définition
-
- Un dictionaire est une _association_ entre des clés et des valeurs.
-
- * Les clés sont uniques
- * Les valeurs sont arbitraires
-
- ## Création de dictionnaires
-
- ```python
- # dictionaire vide
- >>> {}
-
- # une clé, une valeur
- >>> {"a": 42}
-
- # deux clés, deux valeurs
- >>> {"a": 42, "b": 53}
-
- # les clés sont uniques:
- >>> {"a": 42, "a": 53}
- {"a": 53}
- ```
-
- Note: tous les dictionnaires sont truthy, sauf les dictionnaires vides.
-
- ## Accès aux valeurs
-
- Avec `[]`, comme pour les listes, mais avec une *clé* à la place d'un *index*.
-
- ```python
- >>> scores = {"john": 10, "bob": 42}
- >>> scores["john"]
- 10
- >>> scores["bob"]
- 42
- >>> scores["charlie"]
- KeyError
- ```
-
- ## Test d'appartenance
-
- Avec `in`, comme le listes:
-
- ```python
- >>> scores = {"john": 10, "bob": 42}
- >>> "charlie" in scores
- False
- ```
-
- ## Modifier la valeur d'une clé
-
- Comme pour les listes: on assigne la nouvelle variable:
-
- ```python
- >>> scores = {"john": 10, "bob": 42}
- >>> scores["john"] = 20
- >>> scores
- {"john": 20, "bob": 42}
- ```
-
- ## Créer une nouvelle clé
-
- Même méchanisme que pour la modification des clés existantes
-
- ```python
- >>> scores = {"john": 10, "bob": 42}
- >>> scores["charlie"] = 30
- >>> scores
- {"john": 20, "bob": 42, "charlie": 30}
- ```
-
- *rappel*: ceci ne fonctionne pas avec les listes!
- ```python
- >>> ma_liste = ["a", "b"]
- >>> ma_liste[1] = "c" # ok
- ["a", "c"]
- >>> ma_liste[3] = "d"
- IndexError
- ```
-
- ## Itérer sur les clés
-
- Avec `for ... in ...`, comme pour les listes
-
- ```python
- scores = {"john": 10, "bob": 42}
- for nom in scores:
- # `nom` est assigné à "john" puis "bob"
- score_associé_au_nom = scores[nom]
- print(nom, score_associé_au_nom)
- ```
-
-
- ## Détruire une clé
-
- Avec `del` - un nouveau mot-clé:
-
- ```python
- >>> scores = {"john": 10, "bob": 42}
- >>> del scores["bob"]
- >>> scores
- {"john": 10}
- ```
-
- ## Détruire un élément d'une liste
-
- ```python
-
- >>> fruits = ["pomme", "banane", "poire"]
- >>> del fruits[1]
- >>> fruits
- ["pomme", "poire"]
- ```
-
- ## Détruire une variable
-
- ```python
- >>> mon_entier = 42
- >>> mon_entier += 3
- >>> mon_entier
- 45
- >>> del mon_entier
- >>> mon_entier == 45
- NameError: name 'mon_entier' is not defined
- ```
-
- ## Détruire une fonction
-
- On peu aussi supprimer des fonctions:
-
- ```python
- def ma_fonction():
- print("bonjour")
-
-
- del ma_fonction
- >>> ma_fonction()
- NameError: name 'ma_fonction' is not defined
- ```
-
- ## Des dictionnaires partout
-
- Les variables globales d'un programme Python sont dans un dictionnaire,
- accessible avec la fonction native `globals()`:
-
- ```python
- $ python3
- >>> globals()
- {
- ...
- '__doc__': None,
- '__name__': '__main__',
- ...
- }
- ```
-
- On reparlera de `__doc__` et `__name__` un autre jour ...
-
-
- ```python
- $ python3
- >>> a = 42
- >>> globals()
- {
- ...
- '__doc__': None,
- '__name__': '__main__',
- ...
- 'a': 42
- }
- ```
-
-
- ```python
- $ python3
- >>> a = 42
- >>> del globals()["a"]
- >>> a
- NameError: name 'a' is not defined
- ```
-
-
- On peut accéder aux variables locales d'une fonction avec `locals()`
-
- ```python
- def ma_fonction():
- a = 42
- b = 3
- c = a + b
- print(locals())
-
- >>> ma_fonction()
- {'a': 42, 'b': 3, 'c': 45}
- ```
-
- En revanche, il n'est pas conseillé de modifier le dictionaire renvoyé par `locals()` ...
-
|