0Pricing
Python Academy · Lezione

defaultdict

Inizializzare automaticamente i valori dei dizionari

defaultdict è una lezione Python Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Python Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Python Academy include 4 lezioni in totale.

Il problema delle chiavi mancanti

Con un normale dict, l'accesso a una chiave inesistente solleva KeyError. È scomodo quando si desidera accumulare valori gradualmente.

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

Ecco defaultdict

defaultdict del modulo collections accetta una funzione factory che produce un valore predefinito per ogni chiave mancante. Lo importi con from collections import defaultdict.

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

Contare con int

Con defaultdict(int), le chiavi mancanti hanno 0 come valore predefinito, quindi può incrementare il conteggio senza controllare prima.

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

Raggruppare con list

defaultdict(list) crea una lista vuota per le nuove chiavi, perfetta per raggruppare gli elementi in categorie.

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

Raccogliere con set

Usi defaultdict(set) quando desidera valori univoci per ogni chiave. I duplicati vengono eliminati automaticamente.

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 factory deve essere chiamabile

L'argomento è un oggetto chiamabile che non accetta argomenti e restituisce il valore predefinito. int, list, set e dict funzionano tutti perché, se chiamati, restituiscono un valore vuoto.

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

Valore predefinito personalizzato con lambda

Può fornire qualsiasi oggetto chiamabile senza argomenti, ad esempio una lambda, per restituire un valore predefinito personalizzato.

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

defaultdict annidati

Una factory può a sua volta creare un defaultdict, consentendo di costruire strutture annidate senza impostazioni manuali.

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'accesso crea la chiave

Tenga presente che la semplice lettura di una chiave mancante la inserisce con il valore predefinito. Dopo l'accesso, la chiave esiste nel dizionario.

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

Controllare senza inserire

Per controllare una chiave senza crearla, usi il metodo .get() oppure l'operatore in, che non attivano mai la factory.

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

Convertire di nuovo in dict

Racchiuda un defaultdict in dict() quando desidera un dizionario normale, ad esempio prima di restituirlo da una funzione o stamparlo in modo chiaro.

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

Verifica rapida

Che cosa rappresenta l'argomento passato a defaultdict?

Riepilogo: defaultdict

Punti chiave:

  • defaultdict(factory) crea automaticamente valori per le chiavi mancanti.
  • int fornisce 0 (conteggio), list fornisce [] (raggruppamento) e set fornisce un set vuoto (raggruppamento di valori univoci).
  • La factory è qualsiasi oggetto chiamabile senza argomenti, inclusa una lambda.
  • La lettura di una chiave mancante la inserisce; usi .get() o in per controllare senza modificarla.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
    g[w[0]].append(w)
print(dict(g))

Domande Frequenti

La lezione «defaultdict» è gratuita?

Sì — il testo completo di «defaultdict» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Python Academy, passa a CoddyKit PRO. Il corso Python Academy include 4 lezioni in totale.

Cosa imparerò in «defaultdict»?

Inizializzare automaticamente i valori dei dizionari Eserciti Python Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Python Academy?

Non è richiesta alcuna esperienza precedente. Python Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «defaultdict»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Python Academy?

Sì. Ogni lezione Python Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple e OrderedDict
← Torna a Python Academy