Aller au contenu
Structures

Counter & defaultdict

Counter compte les occurrences d'une collection en une ligne et defaultdict crée une valeur par défaut pour chaque nouvelle clé. Ils simplifient comptages et regroupements sans pandas.

  • collections
  • Counter
  • defaultdict
  • comptage
  • regroupement
  • most_common

Syntaxe

Modèle
from collections import Counter, defaultdictc = Counter(iterable)      c.most_common(n)     c[cle]   # 0 si absented = defaultdict(list)      d[cle].append(x)

Exemple

Exemple concret
from collections import Counter, defaultdictcodes_http = ["200", "404", "200", "500", "200", "404"]compte = Counter(codes_http)print(compte.most_common(2))       # → [('200', 3), ('404', 2)]print(compte["302"])               # → 0ventes = [("Lyon", 120), ("Paris", 300), ("Lyon", 80)]par_ville = defaultdict(list)for ville, montant in ventes:    par_ville[ville].append(montant)print(dict(par_ville))             # → {'Lyon': [120, 80], 'Paris': [300]}totaux = defaultdict(int)for ville, montant in ventes:    totaux[ville] += montantprint(totaux["Lyon"])              # → 200

À retenir

  1. Une clé absente d'un Counter vaut 0 sans être créée ; deux Counter s'additionnent (c1 + c2), ce qui cumule des comptages par lot.
  2. defaultdict(int) démarre chaque compteur à 0, defaultdict(list) chaque groupe à une liste vide, defaultdict(set) à un ensemble vide.
  3. Piège : avec un defaultdict, la simple lecture d'une clé absente (d["x"]) la crée. Testez la présence avec "x" in d, ou lisez avec d.get("x").
  4. Counter(texte.split()) donne la fréquence des mots d'un texte en une ligne.
  5. Dès que les données forment un tableau, value_counts() et groupby() de pandas font la même chose avec davantage d'options.

Voir aussi