Python Academy · Oppitunti

namedtuple ja OrderedDict

Muita käteviä kokoelmia

Oppitunti 4/413 vaihetta

namedtuple ja OrderedDict on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/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.

Kaksi muuta kätevää kokoelmaa

collections-moduuli sisältää namedtuple-rakenteen helposti luettavia tietueen kaltaisia tupleja varten sekä OrderedDict-rakenteen sanakirjoja varten, joissa on ylimääräisiä järjestysmenetelmiä.

Tuokaa ne käyttöön komennolla from collections import namedtuple, OrderedDict.

from collections import namedtuple, OrderedDict
print(namedtuple)
print(OrderedDict)

namedtuplen määrittäminen

namedtuple(name, fields) luo uuden tuple-aliluokan. Välitätte sille tyypin nimen ja luettelon kenttien nimistä. Tuloksena on luokka, josta voitte luoda ilmentymiä.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p)

Käyttö nimen perusteella

Suurin hyöty on se, että voitte lukea kenttiä nimien ettekä hankalasti muistettavien indeksinumeroiden perusteella, mikä tekee koodista huomattavasti luettavampaa.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x)
print(p.y)

Silti tuple

namedtuple on varsinainen tuple, joten indeksointi, purkaminen ja iterointi toimivat edelleen.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p[0])
x, y = p
print(x + y)

Muuttumaton mutta korvattavissa

Kuten kaikki tuplet, namedtuplet ovat muuttumattomia. Jos haluatte muokatun kopion, käyttäkää ._replace()-menetelmää, joka palauttaa uuden ilmentymän.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
q = p._replace(y=10)
print(p)
print(q)

Muun­taminen sanakirjaksi

._asdict() muuntaa namedtuplen tavalliseksi sanakirjaksi, jossa kenttien nimet yhdistyvät arvoihin.

from collections import namedtuple
Car = namedtuple('Car', ['make', 'year'])
c = Car('Toyota', 2026)
print(c._asdict())

Oletusarvot

Antakaa defaults-arvot namedtuplea määrittäessänne. Oletusarvot koskevat oikeanpuoleisimpia kenttiä, joten voitte jättää ne pois ilmentymiä luodessanne.

from collections import namedtuple
User = namedtuple('User', ['name', 'role'], defaults=['guest'])
print(User('Alice'))
print(User('Bob', 'admin'))

Kenttien tarkasteleminen

._fields-attribuutti luettelee kenttien nimet, mikä on hyödyllistä introspektiossa tai yleiskäyttöistä koodia rakennettaessa.

from collections import namedtuple
Color = namedtuple('Color', ['r', 'g', 'b'])
print(Color._fields)

OrderedDictin perusteet

OrderedDict säilyttää lisäysjärjestyksen. Python 3.7:stä alkaen myös tavalliset dictit säilyttävät järjestyksen, mutta OrderedDict tarjoaa ylimääräisiä järjestysmenetelmiä, joita ette muuten saa käyttöön.

from collections import OrderedDict
od = OrderedDict()
od['first'] = 1
od['second'] = 2
print(od)

move_to_end

.move_to_end(key) siirtää avaimen loppuun (tai alkuun, kun käytätte last=False). Tämä on OrderedDictin erityisominaisuus ja hyödyllinen LRU-tyyppisessä logiikassa.

from collections import OrderedDict
od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))
od.move_to_end('c', last=False)
print(list(od.keys()))

Järjestyksestä riippuva yhtäsuuruus

Kaksi OrderedDict-objektia ovat yhtä suuret vain, jos niiden alkiot ovat samassa järjestyksessä. Tavalliset dictit eivät huomioi järjestystä vertailuissa.

from collections import OrderedDict
a = OrderedDict([('x', 1), ('y', 2)])
b = OrderedDict([('y', 2), ('x', 1)])
print(a == b)
print(dict(a) == dict(b))

Pikatarkistus

Miten luotte namedtuplesta muokatun kopion, kun namedtuple on muuttumaton?

Kertaus: namedtuple ja OrderedDict

Yhteenveto:

  • namedtuple(name, fields) luo helposti luettavia, muuttumattomia tietueita, joiden kenttiä voi käyttää nimillä.
  • Käyttäkää ._replace()-menetelmää muokattujen kopioiden luomiseen ja ._asdict()-menetelmää sanakirjaksi muuntamiseen.
  • OrderedDict säilyttää lisäysjärjestyksen ja lisää .move_to_end()-menetelmän.
  • OrderedDictien yhtäsuuruus riippuu järjestyksestä, toisin kuin tavallisten dictien.
from collections import namedtuple
Pt = namedtuple('Pt', ['x', 'y'])
print(Pt(1, 2)._asdict())
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 ”namedtuple ja OrderedDict” ilmainen?

Kyllä – oppitunnin ”namedtuple ja OrderedDict” 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 ”namedtuple ja OrderedDict”?

Muita käteviä kokoelmia 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 4/4.

Kuinka kauan ”namedtuple ja OrderedDict”-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