logo

Namedtuple Python

Python atbalsta konteinera vārdnīcas veidu ar nosaukumu " nosaukts divkāršs() ' atrodas modulī' kolekcijas '. Šajā rakstā mēs redzēsim, kā izveidot NameTuple un darbības ar NamedTuple.

Kas ir NamedTuple Python?

In Python NamedTuple atrodas iekšpusē kolekciju modulis . Tas nodrošina veidu, kā izveidot vienkāršas vieglas datu struktūras, kas līdzīgas klasei, bet bez papildu izdevumiem, kas saistīti ar pilnas klases definēšanu. Tāpat kā vārdnīcās, tajās ir atslēgas, kas ir sajauktas līdz noteiktai vērtībai. Gluži pretēji, tas atbalsta gan piekļuvi no atslēgas vērtības, gan funkcionalitātes iterāciju vārdnīcas trūkums.



Python NamedTuple sintakse

namedtuple(tipa nosaukuma lauku_nosaukumi)

  • typename — namedtuple nosaukums.
  • field_names — atribūtu saraksts, kas tiek glabāts namedtuple.

Piemērs: NamedTuple koda ieviešana ir parādīta 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) 

Izvade
The Student age using index is : 19 The Student name using keyname is : Nandini 

Darbības ar NamedTuple

Tālāk ir norādītas šādas darbības, kuras var veikt, izmantojot namedtuple ():



  • Izveidojiet NameTuple
  • Piekļuves operācijas
  • Konversijas operācijas
  • Papildu operācijas

Izveidojiet NameTuple programmā Python

Tādējādi tiek izveidota jauna namedtuple klase, izmantojot funkciju namedtuple() no kolekcijas modulis. Pirmais arguments ir jaunās klases nosaukums, bet otrais arguments ir lauku nosaukumu saraksts.

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

Izvade
1 2 

Piekļuves operācijas

Namedtuples programmā Python nodrošina ērtus veidus, kā piekļūt saviem laukiem. Tālāk ir norādītas dažas piekļuves darbības, kas nodrošinātas Python programmā NamedTuple:

10 no 40
  • Piekļuve pēc indeksa
  • Piekļuve pēc atslēgas nosaukuma
  • Piekļuve, izmantojot getattr()

Piekļuve pēc indeksa

Namedtuple() atribūtu vērtības ir sakārtotas, un tām var piekļūt, izmantojot indeksa numuru, atšķirībā no vārdnīcām, kuras nav pieejamas, izmantojot indeksu. Šajā piemērā mēs piekļūstam skolēna datiem, izmantojot indeksu.



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]) 

Izvade
The Student age using index is : 19 

Piekļuve pēc atslēgas nosaukuma

Tāpat kā vārdnīcās, ir atļauta piekļuve arī pēc atslēgas nosaukuma. Šajā piemērā mēs izmantojam atslēgas nosaukumu, lai piekļūtu skolēna vārdam.

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) 

Izvade
The Student name using keyname is : Nandini 

Piekļuve, izmantojot getattr()

Šis ir vēl viens veids, kā piekļūt vērtībai, kā argumentu norādot namedtuple un atslēgas vērtību. Šajā piemērā mēs izmantojam getattr (), lai piekļūtu studenta ID dotajā nosaukumā.

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')) 

Izvade
The Student DOB using getattr() is : 2541997 

Konversijas operācijas

Namedtuples nodrošina dažas noderīgas konvertēšanas darbības, lai strādātu ar citiem datu veidiem Python . Tālāk ir norādītas šādas konvertēšanas darbības, kas ir paredzētas Python namedtuples:

  • Izmantojot _make()
  • Izmantojot _asdict()
  • Izmantojot operatoru ** (dubultzvaigzne).

Reklāmguvums, izmantojot _make()

Šo funkciju izmanto, lai atgrieztu a namedtuple() no iterable pieņemts kā arguments. Šajā piemērā mēs izmantojam _make(), lai sarakstu "li" pārvērstu par namedtuple.

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)) 

Izvade
The namedtuple instance using iterable is : Student(name='Manjeet' age='19' DOB='411997') 

Konversijas darbība, izmantojot _asdict()

Šī funkcija atgriežas uz OrderedDict() kā izveidots no namedtuple() kartētajām vērtībām. Šajā piemērā mēs izmantojam _asdict(), lai pārvērstu ievades sarakstu par nosaukumiem dubultā instancē.

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()) 

Izvade
The OrderedDict instance using namedtuple is : OrderedDict([('name' 'Nandini') ('age' '19') ('DOB' '2541997')]) 

Izmantojot operatoru “**” (dubultzvaigzne).

Šo funkciju izmanto, lai pārvērstu vārdnīcu par namedtuple(). Šajā piemērā mēs izmantojam '**', lai pārveidotu ievades sarakstu par namedtuple.

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)) 

Izvade
The namedtuple instance from dict is : Student(name='Nikhil' age=19 DOB='1391997') 

Papildu operācijas 

Ir paredzētas dažas papildu darbības Python NamedTuples:

alfabēts numurēts
  • _lauki
  • _aizvietot()
  • __jauns__()
  • __getnewargs__()

_lauki

Šis datu atribūts tiek izmantots, lai iegūtu visi atslēgas vārdi no deklarētās nosaukumvietas. Šajā piemērā mēs izmantojam _fields, lai iegūtu visus deklarētos nosaukumvietas atslēgu nosaukumus.

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) 

Izvade
All the fields of students are : ('name' 'age' 'DOB') 

_aizvietot()

_replace() ir līdzīgs str.replace(), bet mērķēts uz laukiem ar nosaukumu (negroza sākotnējās vērtības). Šajā piemērā mēs izmantojam _replace(), lai aizstātu nosaukumu no 'Nandini' uz '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')) 

Izvade
returns a new namedtuple : Student(name='Manjeet' age='19' DOB='2541997') 

__jauns__()

Šī funkcija atgriež jaunu studentu klases gadījumu, ņemot vērtības, kuras vēlamies piešķirt taustiņiem nosauktajā kortežā. Šajā piemērā mēs izmantojam __new__(), lai atgrieztu jaunu studentu klases gadījumu.

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')) 

Izvade
Student(name='Himesh' age='19' DOB='26082003') 

__getnewargs__()

Šī funkcija atgriež nosaukto virkni kā vienkāršu virkni. Šajā piemērā mēs darām to pašu, izmantojot __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__()) 

Izvade
('Himesh' '19' '26082003') 
    1. Mainīgums : klases gadījumi var būt mainīgi vai nemainīginamedtuplegadījumi ir nemainīgi.
    2. Metodes : klasēs var būt metodes (funkcijas), kamērnamedtuplegalvenokārt nodrošina veidu, kā uzglabāt datus ar nosauktiem laukiem.
    3. Mantojums : klases atbalsta pārmantošanu, ļaujot izveidot sarežģītas hierarhijas, turpretimnamedtupleneatbalsta mantojumu.

    Kāda ir atšķirība starp drukātu dict un namedtuple?

    1. Tipa pārbaude :TypedDict(notypingmodulis) nodrošina tipa padomus vārdnīcām ar konkrētiem atslēgu-vērtību pāriem, kas ir noderīgi tipa pārbaudei.namedtuplenesniedz tipa mājienus.
    2. Mainīgums :TypedDictgadījumi ir maināmi, ļaujot mainīt vērtības, kamērnamedtuplegadījumi ir nemainīgi.
    3. Struktūra :TypedDicttiek izmantots, lai definētu vārdnīcu struktūru ar konkrētiem veidiem katrai atslēgai, turpretimnamedtuplenodrošina nosauktus laukus kortežveidīgiem datiem.