Python atbalsta konteinera vārdnīcas veidu, ko sauc 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, taču 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 iterāciju, funkcionalitāti, kas vārdnīcas trūkums.
Python NamedTuple sintakse
namedtuple(tipa nosaukums, lauka_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 .
java ir nākamaisPython3
# 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.
propozicionālā loģikaPython3
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:
- Piekļuve pēc indeksa
- Piekļuve pēc atslēgas nosaukuma
- Piekļūstiet, 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 ar indeksu. Šajā piemērā mēs piekļūstam studenta datiem, izmantojot indeksu.
Python3 # 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.
Python3 # 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ā.
lauva salīdzinājumā ar tīģeriPython3
# 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 iterējamā pieņemts kā arguments. Šajā piemērā mēs izmantojam _make(), lai sarakstu li pārvērstu par namedtuple.
Python3 # 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 nosauktu divkāršu instanci.
Python3 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.
Python3 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:
- _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 laukus _fields, lai iegūtu visus deklarētos nosaukumvietas atslēgu nosaukumus.
java kortežiPython3
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 tas ir vērsts uz nosauktajiem laukiem( nemaina sākotnējās vērtības). Šajā piemērā mēs izmantojam _replace(), lai aizstātu nosaukumu no Nandini uz Manjeet.
Python3 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.
Python3 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(name,age,DOB) 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__().
Python3 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')>