logo

Namedtuple Pythonissa

Python tukee eräänlaista konttisanakirjaa nimeltä " namedtuple() ' läsnä moduulissa' kokoelmat '. Tässä artikkelissa aiomme nähdä, kuinka NameTuple luodaan ja toimintoja NamedTuplessa.

Mikä on NamedTuple Pythonissa?

sisään Python NamedTuple on läsnä sisällä kokoelmat moduuli . Se tarjoaa tavan luoda yksinkertaisia ​​kevyitä tietorakenteita, jotka muistuttavat luokkaa, mutta ilman täyden luokan määrittelyä. Kuten sanakirjat, ne sisältävät avaimia, jotka on hajautettu tiettyyn arvoon. Päinvastoin se tukee sekä pääsyä avainarvosta että iterointia toiminnallisuutta, joka sanakirjoja puute.



Python NamedTuple Syntaksi

namedtuple(tyyppinimi kenttien_nimet)

  • typename - Namedtuplen nimi.
  • kentän_nimet - Nimettyjen kenttään tallennettujen attribuuttien luettelo.

Esimerkki: NamedTuplen koodin toteutus näytetään Python .

Python
# Python code to demonstrate namedtuple() from collections import namedtuple # Declaring namedtuple() Student = namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using index print('The Student age using index is : ' end='') print(S[1]) # Access using name print('The Student name using keyname is : ' end='') print(S.name) 

Lähtö
The Student age using index is : 19 The Student name using keyname is : Nandini 

Toiminnot NamedTuplessa

Alla on seuraavat toiminnot, jotka voidaan tehdä komennolla namedtuple():



  • Luo NameTuple
  • Pääsytoiminnot
  • Muunnostoiminnot
  • Lisätoiminnot

Luo NameTuple Pythonissa

Tämä luo uuden namedtuple-luokan käyttämällä namedtuple()-funktiota tiedostosta kokoelmat moduuli. Ensimmäinen argumentti on uuden luokan nimi ja toinen argumentti on luettelo kenttien nimistä.

Python
from collections import namedtuple Point = namedtuple('Point' ['x' 'y']) p = Point(x=1 y=2) print(p.x p.y) 

Lähtö
1 2 

Pääsytoiminnot

Pythonin nimetyt kaksikot tarjoavat käteviä tapoja käyttää kenttiään. Alla on joitain Pythonissa NamedTuplelle tarjottuja pääsytoimintoja:

  • Pääsy hakemiston perusteella
  • Pääsy avaimen nimellä
  • Pääsy käyttämällä getattr()

Pääsy hakemiston mukaan

Namedtuple():n attribuuttiarvot ovat järjestyksessä ja niihin pääsee käsiksi indeksinumerolla toisin kuin sanakirjoissa, joihin indeksillä ei päästä. Tässä esimerkissä pääsemme oppilaan hakemistoon.



kassalle gitillä
Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using index print('The Student age using index is : ' end='') print(S[1]) 

Lähtö
The Student age using index is : 19 

Pääsy avaimen nimellä

Pääsy avaimen nimellä on myös sallittu, kuten sanakirjoissa. Tässä esimerkissä käytämme avainnimeä oppilaan nimen lukemiseen.

Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using name print('The Student name using keyname is : ' end='') print(S.name) 

Lähtö
The Student name using keyname is : Nandini 

Pääsy käyttämällä getattr()

Tämä on vielä yksi tapa päästä arvoon antamalla argumentiksi namedtuple ja avainarvo. Tässä esimerkissä käytämme getattr():tä päästäksemme opiskelijan tunnukseen annetussa namedtuplessa.

menetelmän ylikuormitus
Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Access using getattr() print('The Student DOB using getattr() is : ' end='') print(getattr(S 'DOB')) 

Lähtö
The Student DOB using getattr() is : 2541997 

Muunnostoiminnot

Namedtuples tarjoaa muutamia hyödyllisiä muunnostoimintoja, joita voit käyttää muiden tietotyyppien kanssa Python . Alla on seuraavat muunnostoiminnot, jotka tarjotaan Pythonin namedtuplesille:

  • _make()
  • _asdict()
  • ** (kaksoistähti) -operaattorin käyttäminen

Muunnos käyttämällä _make()

Tätä funktiota käytetään palauttamaan a namedtuple() iterablesta meni argumenttina. Tässä esimerkissä käytämme _make()-funktiota listan 'li' muuntamiseen namedtupleksi.

Python
# importing 'collections' for namedtuple() import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using _make() to return namedtuple() print('The namedtuple instance using iterable is : ') print(Student._make(li)) 

Lähtö
The namedtuple instance using iterable is : Student(name='Manjeet' age='19' DOB='411997') 

Muunnostoiminto käyttämällä _asdict()

Tämä funktio palauttaa the OrderedDict() muodostettuna namedtuple()-parametrin kartoitetuista arvoista. Tässä esimerkissä käytämme _asdict() muuntaaksesi syöttöluettelon namedtuple-instanssiksi.

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] # initializing dict di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using _asdict() to return an OrderedDict() print('The OrderedDict instance using namedtuple is : ') print(S._asdict()) 

Lähtö
The OrderedDict instance using namedtuple is : OrderedDict([('name' 'Nandini') ('age' '19') ('DOB' '2541997')]) 

Käytä '**' (kaksoistähti) -operaattoria

Tätä funktiota käytetään sanakirjan muuntamiseen namedtuple(). Tässä esimerkissä käytämme '**' muuntaaksesi syöttöluettelon namedtupleksi.

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # initializing iterable li = ['Manjeet' '19' '411997'] # initializing dict di = {'name': 'Nikhil' 'age': 19 'DOB': '1391997'} # using ** operator to return namedtuple from dictionary print('The namedtuple instance from dict is : ') print(Student(**di)) 

Lähtö
The namedtuple instance from dict is : Student(name='Nikhil' age=19 DOB='1391997') 

Lisätoiminnot 

Siinä on joitain lisätoimintoja Python NamedTuplesille:

  • _kentät
  • _korvata()
  • __uusi__()
  • __getnewargs__()

_kentät

Tätä dataattribuuttia käytetään saamaan kaikki avaimenimet ilmoitetusta nimiavaruudesta. Tässä esimerkissä käytämme _fields-kenttiä saadaksemme kaikki nimiavaruuden avainnimet ilmoitettuun.

Python
import collections Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # using _fields to display all the keynames of namedtuple() print('All the fields of students are : ') print(S._fields) 

Lähtö
All the fields of students are : ('name' 'age' 'DOB') 

_korvata()

_replace() on kuin str.replace(), mutta kohdistaa nimettyihin kenttiin( ei muuta alkuperäisiä arvoja). Tässä esimerkissä käytämme _replace()-funktiota korvataksemme nimen 'Nandini' nimestä 'Manjeet'.

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # ._replace returns a new namedtuple  # it does not modify the original print('returns a new namedtuple : ') print(S._replace(name='Manjeet')) 

Lähtö
returns a new namedtuple : Student(name='Manjeet' age='19' DOB='2541997') 

__uusi__()

Tämä funktio palauttaa Opiskelija-luokan uuden esiintymän ottamalla arvot, jotka haluamme määrittää nimetyn monikon avaimille. Tässä esimerkissä käytämme __new__() palauttamaan opiskelija-luokan uuden esiintymän.

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') # Student.__new__ returns a new instance of Student(nameageDOB) print(Student.__new__(Student'Himesh''19''26082003')) 

Lähtö
Student(name='Himesh' age='19' DOB='26082003') 

__getnewargs__()

Tämä funktio palauttaa nimetyn monikon tavallisena monikona. Tässä esimerkissä teemme saman käyttämällä __getnewargs__().

Python
import collections # Declaring namedtuple() Student = collections.namedtuple('Student' ['name' 'age' 'DOB']) # Adding values S = Student('Nandini' '19' '2541997') H=Student('Himesh''19''26082003') # .__getnewargs__ returns the named tuple as a plain tuple print(H.__getnewargs__()) 

Lähtö
('Himesh' '19' '26082003') 
    1. Muuttuvuus : Luokan ilmentymät voivat olla muuttuvia tai muuttumattomianamedtupletapaukset ovat muuttumattomia.
    2. menetelmät : Luokat voivat sisältää menetelmiä (funktioita) whilenamedtupletarjoaa ensisijaisesti tavan tallentaa tietoja nimetyillä kentillä.
    3. Perintö : Luokat tukevat periytymistä, mikä mahdollistaa monimutkaisten hierarkioiden luomisennamedtupleei tue perintöä.

    Mitä eroa on kirjoitetulla sanelulla ja namedtuplella?

    1. Tyypin tarkistus :TypedDict(alkaentypingmoduuli) tarjoaa tyyppivihjeitä sanakirjoille, joissa on tietyt avain-arvo-parit, jotka ovat hyödyllisiä tyypin tarkistuksessa.namedtupleei anna tyyppivihjeitä.
    2. Muuttuvuus :TypedDictesiintymät ovat muuttuvia, mikä mahdollistaa arvojen muuttamisen whilenamedtupletapaukset ovat muuttumattomia.
    3. Rakenne :TypedDictkäytetään määrittelemään sanakirjojen rakenne, jossa on tietyt tyypit kullekin avaimellenamedtupletarjoaa nimetyt kentät monikkomaisille tiedoille.