defaultdict
Alusta sanakirja-arvot automaattisesti
defaultdict on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.
Puuttuvan avaimen ongelma
Tavallisessa dict-objektissa olemattoman avaimen käyttäminen aiheuttaa KeyError-poikkeuksen. Tämä on hankalaa, kun arvoja halutaan koota vähitellen.
d = {}
try:
d['x'].append(1)
except KeyError as e:
print('KeyError:', e)defaultdict käyttöön
collections-moduulin defaultdict ottaa parametrikseen tehdasfunktion, joka tuottaa oletusarvon jokaiselle puuttuvalle avaimelle. Tuokaa se käyttöön komennolla from collections import defaultdict.
from collections import defaultdict
d = defaultdict(int)
print(d['missing'])
print(dict(d))Laskeminen int-tyypillä
Käytettäessä defaultdict(int)-rakennetta puuttuvien avainten oletusarvo on 0, joten arvoa voi kasvattaa ilman erillistä tarkistusta.
from collections import defaultdict
counts = defaultdict(int)
for ch in 'banana':
counts[ch] += 1
print(dict(counts))Ryhmittely list-tyypillä
defaultdict(list) luo uusille avaimille tyhjän listan, joten se sopii erinomaisesti alkioiden ryhmittelyyn ryhmiin.
from collections import defaultdict
groups = defaultdict(list)
words = ['apple', 'ant', 'bee', 'bear']
for w in words:
groups[w[0]].append(w)
print(dict(groups))Kerääminen set-tyypillä
Käyttäkää defaultdict(set)-rakennetta, kun haluatte kullekin avaimelle yksilölliset arvot. Kaksoiskappaleet poistetaan automaattisesti.
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))Tehdasfunktion on oltava kutsuttava
Argumentin on oltava kutsuttava, argumentittomasti toimiva objekti, joka palauttaa oletusarvon. int, list, set ja dict toimivat kaikki, koska niiden kutsuminen palauttaa tyhjän arvon.
from collections import defaultdict
print(int())
print(list())
print(set())Mukautettu oletusarvo lambdalla
Voitte antaa minkä tahansa argumentittomasti toimivan kutsuttavan objektin, kuten lambda-funktion, palauttamaan mukautetun oletusarvon.
from collections import defaultdict
scores = defaultdict(lambda: 100)
print(scores['new_player'])
scores['alice'] -= 10
print(dict(scores))Sisäkkäiset defaultdictit
Tehdasfunktio voi itse luoda defaultdict-objektin, jolloin sisäkkäisiä rakenteita voi muodostaa ilman manuaalista alustamista.
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'])Käyttö luo avaimen
Huomioikaa: puuttuvan avaimen pelkkä lukeminen lisää sen oletusarvolla. Avaimesta tulee sanakirjan jäsen heti käytön jälkeen.
from collections import defaultdict
d = defaultdict(int)
_ = d['ghost']
print('ghost' in d)
print(dict(d))Tarkistaminen ilman lisäämistä
Voitte tarkistaa avaimen luomatta sitä käyttämällä .get()-metodia tai in-operaattoria. Ne eivät koskaan käynnistä tehdasfunktiota.
from collections import defaultdict
d = defaultdict(int)
print(d.get('safe', 'default'))
print('safe' in d)
print(dict(d))Muuntaminen takaisin dictiksi
Käärikää defaultdict dict()-kutsuun, kun haluatte tavallisen sanakirjan esimerkiksi ennen sen palauttamista funktiosta tai siistiä tulostamista varten.
from collections import defaultdict
dd = defaultdict(list)
dd['a'].append(1)
plain = dict(dd)
print(type(plain))
print(plain)Pikatarkistus
Mitä defaultdict-rakenteelle annettu argumentti tarkoittaa?
Kertaus: defaultdict
Tärkeimmät asiat:
defaultdict(factory)luo puuttuville avaimille automaattisesti arvot.inttuottaa arvon 0 (laskeminen),listarvon [] (ryhmittely) jasettyhjän joukon (yksilöllinen ryhmittely).- Tehdasfunktio voi olla mikä tahansa argumentiton kutsuttava objekti, myös
lambda. - Puuttuvan avaimen lukeminen lisää sen sanakirjaan. Tarkistakaa arvo turvallisesti käyttämällä
.get()-metodia taiin-operaattoria.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
g[w[0]].append(w)
print(dict(g))Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 320
Usein kysytyt kysymykset
Onko oppitunti ”defaultdict” ilmainen?
Kyllä – oppitunnin ”defaultdict” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”defaultdict”?
Alusta sanakirja-arvot automaattisesti Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”defaultdict”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?
Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Counter
- defaultdict
- deque
- namedtuple ja OrderedDict