Retour au cours

dictionnaires : clés/valeurs, méthodes, parcours

les dictionnaires associent des clés immuables à des valeurs. c’est la structure reine pour représenter des enregistrements.

objectifs

  • créer, lire, mettre à jour et supprimer des paires clé/valeur
  • parcourir keys(), values(), items()
  • utiliser get, setdefault, update, l’opérateur |
  • gérer des structures imbriquées (dicts de dicts/listes)

explication détaillée

clés typiques : str, int, tuples immuables. méthodes fréquentes :

  • d.get(k, default) pour récupérer sans KeyError
  • d.setdefault(k, default) pour initialiser si absent
  • fusion : d1 | d2 (py3.9+) ou d.update(...)
  • suppression : pop(k, default), del d[k]

exemples exécutables

user = {"name": "ana", "age": 30}
print(user["name"])
print(user.get("city", "n/a"))
user["age"] = 31
user["city"] = "paris"
print(user)
# parcours
for k, v in user.items():
    print(k, v)
# setdefault pour regrouper
by_len = {}
for w in ["a", "bb", "c", "dd"]:
    by_len.setdefault(len(w), []).append(w)
print(by_len)  # {1: ['a','c'], 2: ['bb','dd']}
# fusion non destructive
a = {"x": 1}
b = {"y": 2}
merged = a | b
print(merged)
# dict imbriqué
record = {"id": 1, "name": {"first": "ana", "last": "silva"}, "tags": ["py", "data"]}
print(record["name"]["first"], record["tags"][0])

bonnes pratiques

  • utilisez get quand une clé peut manquer
  • évitez de muter profondément sans vérifier l’existence des niveaux
  • copiez (dict(d) ou d.copy()) si vous ne voulez pas modifier l’original

pièges courants

  • KeyError en accédant à une clé absente → préférez get ou testez in
  • confusion entre références partagées dans les valeurs (listes mutables)
  • écraser des clés lors d’une fusion non contrôlée

exercices

  1. construire un index {initiale: [mots...]} à partir d’une liste de mots.
  2. inverser {clé: valeur} simple en {valeur: clé}.
  3. compter les occurrences de mots d’une phrase (séparer sur espaces et ponctuation simple).
  4. fusionner deux dicts config en priorisant le second.