Python podpira vrsto vsebniškega slovarja, imenovanega namedtuple() prisoten v modulu zbirke . V tem članku si bomo ogledali, kako ustvariti NameTuple in operacije na NamedTuple.
Kaj je NamedTuple v Pythonu?
noter Python , NamedTuple je prisoten znotraj modul zbirk . Zagotavlja način za ustvarjanje preprostih, lahkih podatkovnih struktur, podobnih razredu, vendar brez dodatnih stroškov definiranja celotnega razreda. Tako kot slovarji vsebujejo ključe, ki so zgoščeni na določeno vrednost. Nasprotno, podpira tako dostop s ključem-vrednostjo kot iteracijo, funkcionalnost, ki slovarji pomanjkanje.
Sintaksa Python NamedTuple
namedtuple(typename, field_names)
- typename – ime namedtuple.
- field_names – seznam atributov, shranjenih v namedtuple.
primer: Izvedba kode NamedTuple je prikazana v Python .
dva proti ena multiplekserPython3
# 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)> Izhod
The Student age using index is : 19 The Student name using keyname is : Nandini>
Operacije na NamedTuple
Spodaj so naslednje operacije, ki jih je mogoče izvesti z uporabo namedtuple():
- Ustvarite NameTuple
- Operacije dostopa
- Pretvorbene operacije
- Dodatne operacije
Ustvarite NameTuple v Pythonu
To ustvari nov razred namedtuple z uporabo funkcije namedtuple() iz zbirke modul. Prvi argument je ime novega razreda, drugi argument pa je seznam imen polj.
model tcp ipPython3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)> Izhod
1 2>
Operacije dostopa
Imenovane dvojke v Pythonu ponujajo priročne načine za dostop do njihovih polj. Spodaj je nekaj operacij dostopa, ki so na voljo v Pythonu za NamedTuple:
- Dostop po indeksu
- Dostop s ključem
- Dostop z getattr()
Dostop po indeksu
Vrednosti atributa namedtuple() so urejene in do njih je mogoče dostopati s številko indeksa, za razliko od slovarjev, ki niso dostopni z indeksom. V tem primeru dostopamo do študentovega z uporabo indeksa.
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])> Izhod
The Student age using index is : 19>
Dostop s ključem
Kot v slovarjih je dovoljen tudi dostop po imenu ključa. V tem primeru uporabljamo keyname za dostop do študentovega imena.
java booleanPython3
# 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)> Izhod
The Student name using keyname is : Nandini>
Dostop z getattr()
To je še en način za dostop do vrednosti tako, da podate namedtuple in vrednost ključa kot njen argument. V tem primeru uporabljamo getattr() za dostop do študentovega ID-ja v dani namedtuple.
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'))> Izhod
The Student DOB using getattr() is : 2541997>
Pretvorbene operacije
Namedtuples zagotavljajo nekaj uporabnih operacij pretvorbe za delo z drugimi tipi podatkov Python . Spodaj so naslednje operacije pretvorbe, ki so na voljo za imenovane dvojke v Pythonu:
- Uporaba _make()
- Uporaba _asdict()
- Uporaba operatorja ** (dvojna zvezdica).
Pretvorba z uporabo _make()
Ta funkcija se uporablja za vrnitev a namedtuple() iz iterable sprejet kot argument. V tem primeru uporabljamo _make() za pretvorbo seznama li v 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))> Izhod
The namedtuple instance using iterable is : Student(name='Manjeet', age='19', DOB='411997')>
Operacija pretvorbe z uporabo _asdict()
Ta funkcija se vrne the OrderedDict() kot je sestavljen iz preslikanih vrednosti namedtuple(). V tem primeru uporabljamo _asdict() za pretvorbo vhodnega seznama v primerek 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())> Izhod
The OrderedDict instance using namedtuple is : OrderedDict([('name', 'Nandini'), ('age', '19'), ('DOB', '2541997')])> Uporaba operatorja ** (dvojna zvezdica).
Ta funkcija se uporablja za pretvorbo slovarja v namedtuple(). V tem primeru uporabljamo ** za pretvorbo vhodnega seznama v namedtuple.
c struktura v strukturiPython3
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))> Izhod
The namedtuple instance from dict is : Student(name='Nikhil', age=19, DOB='1391997')>
Dodatne operacije
Na voljo je nekaj dodatnih operacij Python za NamedTuples:
- _polja
- _zamenjati()
- __novo__()
- __getnewwargs__()
_polja
Ta podatkovni atribut se uporablja za pridobivanje vsa ključna imena deklariranega imenskega prostora. V tem primeru uporabljamo _fields, da dobimo deklarirana vsa imena ključev imenskega prostora.
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)> Izhod
All the fields of students are : ('name', 'age', 'DOB')> _zamenjati()
_replace() je kot str.replace(), vendar cilja na imenovana polja (ne spreminja prvotnih vrednosti). V tem primeru uporabljamo _replace() za zamenjavo imena iz Nandini v 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'))> Izhod
returns a new namedtuple : Student(name='Manjeet', age='19', DOB='2541997')>
__novo__()
Ta funkcija vrne nov primerek razreda Student tako, da vzame vrednosti, ki jih želimo dodeliti ključem v imenovani tuple. V tem primeru uporabljamo __new__() za vrnitev novega primerka razreda Student.
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'))> Izhod
Student(name='Himesh', age='19', DOB='26082003')>
__getnewwargs__()
Ta funkcija vrne imenovano torko kot navadno torko. V tem primeru delamo enako z uporabo __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__())> Izhod
('Himesh', '19', '26082003')>