namedtuple ja OrderedDict
Muita käteviä kokoelmia
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)Muuntaminen 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. OrderedDictsä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())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
- Counter
- defaultdict
- deque
- namedtuple ja OrderedDict