Python podporuje typ kontajnerového slovníka tzv namedtuple() prítomný v module zbierky . V tomto článku uvidíme, ako vytvoriť NameTuple a operácie na NamedTuple.
Čo je NamedTuple v Pythone?
In Python , NamedTuple je prítomný vo vnútri modul zbierok . Poskytuje spôsob, ako vytvoriť jednoduché, ľahké dátové štruktúry podobné triede, ale bez réžie definovania celej triedy. Podobne ako slovníky obsahujú kľúče, ktoré sú hašované na konkrétnu hodnotu. Naopak, podporuje prístup z páru kľúč-hodnota aj iteráciu, teda funkciu, ktorá slovníkov nedostatok.
Syntax NamedTuple Pythonu
Namedtuple(typename, field_names)
- typename – názov namenej množiny.
- field_names – Zoznam atribútov uložených v Namedtple.
Príklad: Implementácia kódu NamedTuple je znázornená v Python .
hlavný program v javePython3
# 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)> Výkon
The Student age using index is : 19 The Student name using keyname is : Nandini>
Operácie na NamedTuple
Nižšie sú uvedené nasledujúce operácie, ktoré možno vykonať pomocou Namedtuple():
- Vytvorte NameTuple
- Operácie prístupu
- Konverzné operácie
- Ďalšie operácie
Vytvorte NameTuple v Pythone
Toto vytvorí novú triedu namedtuple pomocou funkcie namedtuple() z zbierky modul. Prvý argument je názov novej triedy a druhý argument je zoznam názvov polí.
filmová herečka kajalPython3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)> Výkon
1 2>
Operácie prístupu
Namedtuple v Pythone poskytujú pohodlné spôsoby prístupu k ich poliam. Nižšie sú uvedené niektoré operácie prístupu poskytované v Pythone pre NamedTuple:
- Prístup podľa indexu
- Prístup podľa názvu kľúča
- Prístup pomocou getattr()
Prístup podľa indexu
Hodnoty atribútov namedtuple() sú usporiadané a možno k nim pristupovať pomocou čísla indexu na rozdiel od slovníkov, ktoré nie sú prístupné indexom. V tomto príklade pristupujeme k študentom pomocou indexu.
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])> Výkon
The Student age using index is : 19>
Prístup podľa názvu kľúča
Prístup podľa názvu kľúča je tiež povolený ako v slovníkoch. V tomto príklade používame keyname na prístup k menu študenta.
pytón ťavejPython3
# 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)> Výkon
The Student name using keyname is : Nandini>
Prístup pomocou getattr()
Toto je ďalší spôsob, ako získať prístup k hodnote zadaním nametuple a kľúčovej hodnoty ako argumentu. V tomto príklade používame getattr() na prístup k ID študenta v danom nametuple.
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 getattr() print('The Student DOB using getattr() is : ', end='') print(getattr(S, 'DOB'))> Výkon
The Student DOB using getattr() is : 2541997>
Konverzné operácie
Namedtuples poskytujú niekoľko užitočných operácií konverzie na prácu s inými typmi údajov Python . Nižšie sú uvedené nasledujúce konverzné operácie, ktoré sú k dispozícii pre Namedtuples v Pythone:
- Použitie _make()
- Použitie _asdict()
- Použitie operátora ** (dvojitá hviezdička).
Konverzia pomocou _make()
Táto funkcia sa používa na vrátenie a Namedtuple() z iterable prešiel ako argument. V tomto príklade používame _make() na konverziu zoznamu li na 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))> Výkon
The namedtuple instance using iterable is : Student(name='Manjeet', age='19', DOB='411997')>
Operácia konverzie pomocou _asdict()
Táto funkcia sa vráti a OrderedDict() ako je skonštruované z mapovaných hodnôt namedtuple(). V tomto príklade používame funkciu _asdict() na konverziu vstupného zoznamu na inštanciu 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 _asdict() to return an OrderedDict() print('The OrderedDict instance using namedtuple is : ') print(S._asdict())> Výkon
The OrderedDict instance using namedtuple is : OrderedDict([('name', 'Nandini'), ('age', '19'), ('DOB', '2541997')])> Použitie operátora ** (dvojitá hviezdička).
Táto funkcia sa používa na konverziu slovníka na namedtuple(). V tomto príklade používame ** na konverziu vstupného zoznamu na namedtuple.
baran herecPython3
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))> Výkon
The namedtuple instance from dict is : Student(name='Nikhil', age=19, DOB='1391997')>
Ďalšie operácie
Existuje niekoľko ďalších operácií, ktoré sú k dispozícii v Python pre NamedTuples:
- _fields
- _replace()
- __Nový__()
- __getnewargs__()
_fields
Tento atribút údajov sa používa na získanie všetky kľúčové mená deklarovaného menného priestoru. V tomto príklade používame _fields na získanie všetkých názvov kľúčov deklarovaného priestoru názvov.
Python3 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)> Výkon
All the fields of students are : ('name', 'age', 'DOB')> _replace()
_replace() je ako str.replace(), ale zameriava sa na pomenované polia (neupravuje pôvodné hodnoty). V tomto príklade používame _replace() na nahradenie mena z Nandini na 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'))> Výkon
returns a new namedtuple : Student(name='Manjeet', age='19', DOB='2541997')>
__Nový__()
Táto funkcia vráti novú inštanciu triedy Študent prebratím hodnôt, ktoré chceme priradiť kľúčom v pomenovanej n-tici. V tomto príklade používame __new__() na vrátenie novej inštancie triedy Študent.
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'))> Výkon
Student(name='Himesh', age='19', DOB='26082003')>
__getnewargs__()
Táto funkcia vráti pomenovanú n-ticu ako obyčajnú n-ticu. V tomto príklade robíme to isté pomocou __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__())> Výkon
('Himesh', '19', '26082003')>