defaultdict
Initialisér automatisk ordbogsværdier
defaultdict er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.
Problemet med manglende nøgler
Med en almindelig dict udløser det KeyError, hvis du tilgår en nøgle, der ikke findes. Det er besværligt, når du vil opbygge værdier trinvist.
d = {}
try:
d['x'].append(1)
except KeyError as e:
print('KeyError:', e)defaultdict kommer på banen
defaultdict fra collections tager en fabriksfunktion, der producerer en standardværdi for enhver manglende nøgle. Importér den med from collections import defaultdict.
from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))Optælling med int
Med defaultdict(int) bliver manglende nøgler som standard sat til 0, så du kan øge værdien uden først at kontrollere nøglen.
from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
counts[ch] += 1
print(dict(counts))Gruppering med list
defaultdict(list) opretter en tom liste for nye nøgler, hvilket er perfekt til at gruppere elementer i grupper.
from collections import defaultdict
groups = defaultdict(list)
words = ['apple', 'ant', 'bee', 'bear']
for w in words:
groups[w[0]].append(w)
print(dict(groups))Indsamling med set
Brug defaultdict(set), når du vil have entydige værdier pr. nøgle. Dubletter fjernes automatisk.
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))Fabriksfunktionen skal kunne kaldes
Argumentet skal kunne kaldes, tage imod ingen argumenter og returnere standardværdien. int, list, set og dict fungerer alle, fordi et kald til dem returnerer en tom værdi.
from collections import defaultdict
print(int())
print(list())
print(set())Tilpasset standardværdi med lambda
Du kan angive hvad som helst, der kan kaldes uden argumenter, for eksempel en lambda, for at returnere en tilpasset standardværdi.
from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))Indlejrede defaultdict-objekter
En fabrik kan selv oprette en defaultdict, så du kan opbygge indlejrede strukturer uden manuel opsætning.
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'])Adgang opretter nøglen
Vær opmærksom på, at selv blot læsning af en manglende nøgle indsætter den med standardværdien. Efter opslaget findes nøglen i dictionary-objektet.
from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))Kontrol uden indsættelse
Brug metoden .get() eller operatoren in for at kontrollere en nøgle uden at oprette den. De udløser aldrig fabrikken.
from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))Konvertering tilbage til dict
Omslut en defaultdict med dict(), når du vil have en almindelig dictionary, for eksempel før du returnerer den fra en funktion eller udskriver den pænt.
from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)Hurtigt tjek
Hvad repræsenterer det argument, du giver til defaultdict?
Opsummering: defaultdict
Det vigtigste:
defaultdict(factory)opretter automatisk værdier for manglende nøgler.intgiver 0 (optælling),listgiver [] (gruppering), ogsetgiver et tomt sæt (entydig gruppering).- Fabriksfunktionen kan være hvad som helst, der kan kaldes uden argumenter, herunder en
lambda. - Læsning af en manglende nøgle indsætter den. Brug
.get()ellerinfor at undersøge den uden denne bivirkning.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
g[w[0]].append(w)
print(dict(g))Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 76
- Lektioner
- 320
Ofte stillede spørgsmål
Er lektionen “defaultdict” gratis?
Ja — hele teksten til “defaultdict” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “defaultdict”?
Initialisér automatisk ordbogsværdier Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Python Academy?
Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “defaultdict”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Python Academy-lektion?
Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Counter
- defaultdict
- deque
- namedtuple og OrderedDict