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.
Pythonfrom 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ē.
Pythonimport 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.
Pythonimport 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.
Pythonimport 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'.
Pythonimport 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.
Pythonimport 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__().
Pythonimport 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') 
- Mainīgums : klases gadījumi var būt mainīgi vai nemainīgi
namedtuplegadījumi ir nemainīgi.- Metodes : klasēs var būt metodes (funkcijas), kamēr
namedtuplegalvenokārt nodrošina veidu, kā uzglabāt datus ar nosauktiem laukiem.- Mantojums : klases atbalsta pārmantošanu, ļaujot izveidot sarežģītas hierarhijas, turpretim
namedtupleneatbalsta mantojumu.
Kāda ir atšķirība starp drukātu dict un namedtuple?
- 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.- Mainīgums :
TypedDictgadījumi ir maināmi, ļaujot mainīt vērtības, kamērnamedtuplegadījumi ir nemainīgi.- 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.
