%% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Lecture de Code - Python/Lecture de code - Python|Accueil · Lecture de code - Python]] > > | [[Code et Développement/Programmation/Lecture de Code - Python/10_ensembles\|← Ensembles]] | [[Code et Développement/Programmation/Lecture de Code - Python/12_fonctions\|Fonctions →]] | > |:---|---:| %% nav-fin %% # Dictionnaires (dict) Un dictionnaire associe des **clés** à des **valeurs**. Les clés sont uniques. --- ## Création ```python d = {"nom": "Alice", "age": 20} d = {} # dictionnaire vide d = dict(nom="Alice", age=20) # syntaxe alternative ``` --- ## Accès et modification ```python d = {"a": 1, "b": 2} d["a"] # vaut 1 d["c"] = 3 # ajoute la clé "c" d["a"] = 99 # modifie la valeur de "a" del d["b"] # supprime la clé "b" ; d vaut {'a': 99, 'c': 3} "a" in d # vaut True : teste la présence d'une clé len(d) # vaut 2 : nombre de paires clé/valeur ``` --- ## Accès sécurisé ```python d.get("z") # vaut None si la clé est absente (pas d'erreur) d.get("z", 0) # vaut 0 : valeur par défaut si la clé est absente d["z"] # KeyError si la clé est absente ``` --- ## Parcours ```python d = {"x": 10, "y": 20} for cle in d: # parcours des clés print(cle, d[cle]) # affiche x 10, puis y 20 for cle, val in d.items(): # parcours des paires print(cle, val) # affiche x 10, puis y 20 for val in d.values(): # parcours des valeurs seules print(val) # affiche 10, puis 20 ``` --- ## Méthodes utiles | Méthode | Résultat | |---|---| | `d.keys()` | vue des clés | | `d.values()` | vue des valeurs | | `d.items()` | vue des paires (clé, valeur) | | `d.get(k, défaut)` | valeur ou défaut si clé absente | | `d.pop(k)` | renvoie la valeur de la clé k et supprime la clé | Un dictionnaire garde l'ordre d'insertion des clés : le parcours et l'affichage suivent cet ordre. --- ## Pattern — comptage d'occurrences ```python texte = input() # entrée : abracadabra freq = {} for c in texte: freq[c] = freq.get(c, 0) + 1 print(freq) # affiche {'a': 5, 'b': 2, 'r': 2, 'c': 1, 'd': 1} ``` **À manipuler :** suivez le même programme avec l'entrée banane. À chaque lettre, `freq.get(c, 0)` renvoie le compte actuel, ou 0 pour une lettre nouvelle. ```sq-trace texte = input() # entrée : banane freq = {} for c in texte: freq[c] = freq.get(c, 0) + 1 print(freq) --- 1 | texte = 'banane' | 2 | freq = {} | 3 | c = 'b' | 4 | freq = {'b': 1} | 3 | c = 'a' | 4 | freq = {'b': 1, 'a': 1} | 3 | c = 'n' | 4 | freq = {'b': 1, 'a': 1, 'n': 1} | 3 | c = 'a' | 4 | freq = {'b': 1, 'a': 2, 'n': 1} | 3 | c = 'n' | 4 | freq = {'b': 1, 'a': 2, 'n': 2} | 3 | c = 'e' | 4 | freq = {'b': 1, 'a': 2, 'n': 2, 'e': 1} | 3 | | 5 | | {'b': 1, 'a': 2, 'n': 2, 'e': 1} ``` --- ## Pattern — regroupement ```python notes = [("Alice", 15), ("Bob", 12), ("Alice", 18)] par_eleve = {} for nom, note in notes: if nom not in par_eleve: par_eleve[nom] = [] par_eleve[nom].append(note) print(par_eleve) # affiche {'Alice': [15, 18], 'Bob': [12]} ``` ## À vous **À manipuler :** prédisez la sortie, ligne par ligne. ```sq-affiche stock = {"pomme": 3, "poire": 0} stock["kiwi"] = 5 stock["pomme"] += 2 print(stock["pomme"]) print(stock.get("prune", 0)) print(len(stock)) print(list(stock)) --- saisie: lignes réponse: 5\n0\n3\n['pomme', 'poire', 'kiwi'] explication: get renvoie la valeur par défaut 0 pour une clé absente. list(stock) donne les clés dans l'ordre d'insertion. ``` ```sq-affiche d = {} for mot in ["un", "deux", "un", "trois", "un"]: d[mot] = d.get(mot, 0) + 1 print(d) --- réponse: {'un': 3, 'deux': 1, 'trois': 1} explication: chaque mot nouveau entre avec la valeur 1. Les apparitions suivantes ajoutent 1. ``` %% nav-debut : généré par gen_navigation.py, ne pas modifier à la main %% > [!nav] > ↩ [[Code et Développement/Programmation/Lecture de Code - Python/Lecture de code - Python|Accueil · Lecture de code - Python]] > > | [[Code et Développement/Programmation/Lecture de Code - Python/10_ensembles\|← Ensembles]] | [[Code et Développement/Programmation/Lecture de Code - Python/12_fonctions\|Fonctions →]] | > |:---|---:| %% nav-fin %%