Python Academy · Oppitunti

defaultdict

Alusta sanakirja-arvot automaattisesti

Oppitunti 2/413 vaihetta

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.
  • int tuottaa arvon 0 (laskeminen), list arvon [] (ryhmittely) ja set tyhjä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 tai in-operaattoria.
from collections import defaultdict
g = defaultdict(list)
for w in ['cat', 'cow', 'dog']:
    g[w[0]].append(w)
print(dict(g))
Aloita maksutta

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

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple ja OrderedDict
← Takaisin: Python Academy