0Pricing
Python Academy · Leçon

defaultdict

Initialiser automatiquement les valeurs d’un dictionnaire

defaultdict est une leçon Python Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Python Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Python Academy comprend 4 leçons au total.

Le problème des clés absentes

Avec un dict normal, accéder à une clé inexistante lève une KeyError. Cela est gênant lorsque vous souhaitez construire progressivement des valeurs.

d = {}
try:
    d['x'].append(1)
except KeyError as e:
    print('KeyError:', e)

Découvrez le dictionnaire à valeurs par défaut

defaultdict du module collections prend une fonction fabrique qui produit une valeur par défaut pour toute clé absente. Importez-le avec from collections import defaultdict.

from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))

Compter avec int

Avec defaultdict(int), les clés absentes prennent par défaut la valeur 0, ce qui vous permet d’incrémenter une valeur sans effectuer de vérification préalable.

from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
    counts[ch] += 1
print(dict(counts))

Regrouper avec list

defaultdict(list) crée une liste vide pour les nouvelles clés, ce qui est idéal pour regrouper les éléments par catégories.

from collections import defaultdict
groups = defaultdict(list)
words = ['apple', 'ant', 'bee', 'bear']
for w in words:
    groups[w[0]].append(w)
print(dict(groups))

Collecter avec set

Utilisez defaultdict(set) lorsque vous voulez des valeurs uniques pour chaque clé. Les doublons sont automatiquement supprimés.

from collections import defaultdict
seen = defaultdict(set)
pairs = [('a', 1), ('a', 1), ('a', 2), ('b', 3)]
for k, v in pairs:
    seen[k].add(v)
print(dict(seen))

La fabrique doit être appelable

L’argument est une fonction appelable qui ne prend aucun argument et renvoie la valeur par défaut. int, list, set et dict fonctionnent tous, car leur appel renvoie une valeur vide.

from collections import defaultdict
print(int())
print(list())
print(set())

Valeur par défaut personnalisée avec lambda

Vous pouvez fournir n’importe quelle fonction appelable sans argument, telle qu’une lambda, pour renvoyer une valeur par défaut personnalisée.

from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))

Dictionnaires à valeurs par défaut imbriqués

Une fabrique peut elle-même créer un defaultdict, ce qui vous permet de construire des structures imbriquées sans préparation manuelle.

from collections import defaultdict
table = defaultdict(lambda: defaultdict(int))
table['fruit']['apples'] += 3
table['fruit']['pears'] += 2
print(table['fruit']['apples'])
print(table['fruit']['pears'])

L’accès crée la clé

Attention : le simple fait de lire une clé absente l’insère avec sa valeur par défaut. Après cet accès, la clé existe dans le dictionnaire.

from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))

Vérifier sans insérer

Pour vérifier une clé sans la créer, utilisez la méthode .get() ou l’opérateur in, qui ne déclenchent jamais la fabrique.

from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))

Reconvertir en dictionnaire

Encadrez un defaultdict avec dict() lorsque vous voulez obtenir un dictionnaire classique, par exemple avant de le renvoyer depuis une fonction ou de l’afficher proprement.

from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)

Vérification rapide

Que représente l’argument transmis à defaultdict ?

Récapitulatif : dictionnaire à valeurs par défaut

Points essentiels :

  • defaultdict(factory) crée automatiquement des valeurs pour les clés absentes.
  • int fournit 0 (comptage), list fournit [] (regroupement) et set fournit un ensemble vide (regroupement sans doublons).
  • La fabrique peut être n’importe quelle fonction appelable sans argument, y compris une lambda.
  • Lire une clé absente l’insère ; utilisez .get() ou in pour la consulter sans risque.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
    g[w[0]].append(w)
print(dict(g))

Questions Fréquemment Posées

La leçon « defaultdict » est-elle gratuite ?

Oui — le texte complet de « defaultdict » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Python Academy, passe à CoddyKit PRO. Le cours Python Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « defaultdict » ?

Initialiser automatiquement les valeurs d’un dictionnaire Tu pratiques Python Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Python Academy ?

Aucune expérience préalable n'est requise. Python Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « defaultdict » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Python Academy ?

Oui. Chaque leçon Python Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple et OrderedDict
← Retour à Python Academy