logo

Namedtuple Python

Python palaiko konteinerio žodyno tipą, vadinamą namedtuple() yra modulyje kolekcijos . Šiame straipsnyje mes pamatysime, kaip sukurti NameTuple ir operacijas su NameTuple.

Kas yra NamedTuple Python?

Į Python , NamedTuple yra viduje kolekcijų modulis . Tai suteikia galimybę sukurti paprastas, lengvas duomenų struktūras, panašias į klasę, tačiau nereikia apibrėžti visos klasės. Kaip ir žodynuose, juose yra raktų, sumaišytų su tam tikra verte. Priešingai, ji palaiko ir prieigą iš rakto vertės, ir iteraciją – funkcionalumą žodynai trūkumas.



Python NamedTuple sintaksė

namedtuple(tipo pavadinimas, lauko_pavadinimai)

  • tipo pavadinimas – namedtuple pavadinimas.
  • field_names – atributų, saugomų namedtuple, sąrašas.

Pavyzdys: NamedTuple kodo įgyvendinimas parodytas Python .

java int kaip eilutę
Python3
# 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)>

Išvestis
The Student age using index is : 19 The Student name using keyname is : Nandini>

„NamedTuple“ operacijos

Žemiau pateikiamos šios operacijos, kurias galima atlikti naudojant namedtuple ():



  • Sukurkite NameTuple
  • Prieigos operacijos
  • Konversijos operacijos
  • Papildomos operacijos

Sukurkite NameTuple programoje Python

Taip sukuriama nauja namedtuple klasė naudojant namedtuple() funkciją iš kolekcijos modulis. Pirmasis argumentas yra naujos klasės pavadinimas, o antrasis argumentas yra laukų pavadinimų sąrašas.

do ir while ciklas java
Python3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)>

Išvestis
1 2>

Prieigos operacijos

Pavadinimai Python suteikia patogius būdus pasiekti savo laukus. Toliau pateikiamos kai kurios prieigos operacijos, pateiktos „Python“, skirtos NamedTuple:

  • Prieiga pagal indeksą
  • Prieiga pagal rakto pavadinimą
  • Prieiga naudojant getattr()

Prieiga pagal indeksą

Namedtuple() atributų reikšmės yra sutvarkytos ir jas galima pasiekti naudojant indekso numerį, skirtingai nei žodynuose, kurių negalima pasiekti naudojant indeksą. Šiame pavyzdyje mes pasiekiame mokinio duomenis naudodami indeksą.



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

Išvestis
The Student age using index is : 19>

Prieiga pagal rakto pavadinimą

Prieiga pagal rakto pavadinimą taip pat leidžiama, kaip ir žodynuose. Šiame pavyzdyje mes naudojame raktinį pavadinimą, kad pasiektume mokinio vardą.

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

Išvestis
The Student name using keyname is : Nandini>

Prieiga naudojant getattr()

Tai dar vienas būdas pasiekti vertę, kaip argumentą pateikiant namedtuple ir rakto reikšmę. Šiame pavyzdyje mes naudojame getattr(), kad pasiektume mokinio ID duotame 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'))>

Išvestis
The Student DOB using getattr() is : 2541997>

Konversijos operacijos

Namedtuples pateikia keletą naudingų konvertavimo operacijų, skirtų dirbti su kitų tipų duomenimis Python . Toliau pateikiamos šios konvertavimo operacijos, kurios yra numatytos „Python“ vardiniams rinkiniams:

modifikavimo klavišai
  • Naudojant _make()
  • Naudojant _asdict()
  • Naudojant ** (dvigubos žvaigždutės) operatorių

Konversija naudojant _make()

Ši funkcija naudojama norint grąžinti a namedtuple() iš iterable priimtas kaip argumentas. Šiame pavyzdyje mes naudojame _make(), norėdami konvertuoti sąrašą li į 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))>

Išvestis
The namedtuple instance using iterable is : Student(name='Manjeet', age='19', DOB='411997')>

Konversijos operacija naudojant _asdict()

Ši funkcija grįžta į OrderedDict() kaip sudaryta iš namedtuple() susietų reikšmių. Šiame pavyzdyje mes naudojame _asdict(), norėdami konvertuoti įvesties sąrašą į vardinį egzempliorių.

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

Išvestis
The OrderedDict instance using namedtuple is : OrderedDict([('name', 'Nandini'), ('age', '19'), ('DOB', '2541997')])>

Naudojant ** (dvigubos žvaigždutės) operatorių

Ši funkcija naudojama konvertuoti žodyną į namedtuple(). Šiame pavyzdyje mes naudojame ** norėdami konvertuoti įvesties sąrašą į 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))>

Išvestis
The namedtuple instance from dict is : Student(name='Nikhil', age=19, DOB='1391997')>

Papildomos operacijos

Yra keletas papildomų operacijų, kurios yra pateiktos Python NamedTuples:

  • _laukai
  • _replace()
  • __naujas__()
  • __getnewargs__()

_laukai

Šis duomenų atributas naudojamas gauti visi raktų vardai paskelbtos vardų srities. Šiame pavyzdyje mes naudojame _fields, kad gautume visus deklaruotus vardų erdvės raktų pavadinimus.

str.substring Java
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)>

Išvestis
All the fields of students are : ('name', 'age', 'DOB')>

_replace()

_replace() yra panašus į str.replace(), bet taiko pavadinimus į laukus( nekeičia pradinių reikšmių). Šiame pavyzdyje mes naudojame _replace(), kad pakeistume pavadinimą iš Nandini į 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'))>

Išvestis
returns a new namedtuple : Student(name='Manjeet', age='19', DOB='2541997')>

__naujas__()

Ši funkcija grąžina naują Studento klasės egzempliorių, paimdama reikšmes, kurias norime priskirti raktams pavadintoje eilutėje. Šiame pavyzdyje mes naudojame __new__(), kad grąžintume naują Mokinio klasės egzempliorių.

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

Išvestis
Student(name='Himesh', age='19', DOB='26082003')>

__getnewargs__()

Ši funkcija grąžina pavadintą seką kaip paprastą seką. Šiame pavyzdyje tą patį darome naudodami __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__())>

Išvestis
('Himesh', '19', '26082003')>