← retour aux snippets

defaultdict: accumuler des listes par clé

Construire facilement des groupes d'éléments par clé.

objectif

Construire facilement des groupes d’éléments par clé.

code minimal

from collections import defaultdict
pairs = [("a", 1), ("b", 2), ("a", 3)]
groups: dict[str, list[int]] = defaultdict(list)
for k, v in pairs:
    groups[k].append(v)
print(groups["a"] == [1,3])  # attendu: True

utilisation

from collections import defaultdict
d = defaultdict(int)
for _ in range(3): d["x"] += 1
print(d["x"] == 3)

variante(s) utile(s)

from collections import defaultdict
d = defaultdict(set)
for i in [1,2,2]: d["k"].add(i)
print(d["k"] == {1,2})

notes

  • default_factory crée la valeur à la volée au premier accès.
  • Évite les if k not in d: d[k] = …