logo

Namedtuple i Python

Python støtter en type containerordbok kalt namedtuple() tilstede i modulen samlinger . I denne artikkelen skal vi se hvordan du oppretter en NameTuple og operasjoner på NamedTuple.

Hva er NamedTuple i Python?

I Python , NamedTuple er til stede inne i samlingsmodul . Det gir en måte å lage enkle, lette datastrukturer som ligner på en klasse, men uten å måtte definere en full klasse. I likhet med ordbøker inneholder de nøkler som hashes til en bestemt verdi. Tvert imot støtter den både tilgang fra nøkkelverdi og iterasjon, funksjonaliteten som ordbøker mangel på.

Python NamedTuple-syntaks

namedtuple(typenavn, feltnavn)



  • typename – Navnet på namedtuple.
  • field_names – Listen over attributter som er lagret i namedtuple.

Eksempel: Kodeimplementering av NamedTuple vises i Python .

... i java
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)>

Produksjon
The Student age using index is : 19 The Student name using keyname is : Nandini>

Operasjoner på NamedTuple

Nedenfor er følgende operasjoner som kan gjøres ved å bruke namedtuple():

  • Lag en NameTuple
  • Tilgang operasjoner
  • Konverteringsoperasjoner
  • Ytterligere operasjoner

Lag en NameTuple i Python

Dette oppretter en ny namedtuple-klasse ved å bruke namedtuple()-funksjonen fra samlinger modul. Det første argumentet er navnet på den nye klassen, og det andre argumentet er en liste over feltnavn.

svever i css
Python3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)>

Produksjon
1 2>

Tilgang operasjoner

Namedtuples i Python gir praktiske måter å få tilgang til feltene deres på. Nedenfor er noen tilgangsoperasjoner gitt i Python for NamedTuple:

  • Tilgang etter indeks
  • Tilgang via nøkkelnavn
  • Tilgang ved å bruke getattr()

Tilgang etter indeks

Attributtverdiene til namedtuple() er ordnet og kan nås ved å bruke indeksnummeret i motsetning til ordbøker som ikke er tilgjengelige med indeks. I dette eksemplet får vi tilgang til studentens ved å bruke 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])>

Produksjon
The Student age using index is : 19>

Tilgang via nøkkelnavn

Tilgang med nøkkelnavn er også tillatt som i ordbøker. I dette eksemplet bruker vi nøkkelnavn for å få tilgang til studentens navn.

skuespiller zeenat aman
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)>

Produksjon
The Student name using keyname is : Nandini>

Tilgang ved å bruke getattr()

Dette er enda en måte å få tilgang til verdien ved å gi namedtuple og nøkkelverdi som argument. I dette eksemplet bruker vi getattr() for å få tilgang til studentens id i den gitte 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'))>

Produksjon
The Student DOB using getattr() is : 2541997>

Konverteringsoperasjoner

Namedtuples gir noen nyttige konverteringsoperasjoner for å jobbe med andre datatyper i Python . Nedenfor er følgende konverteringsoperasjoner som er gitt for namedtuples i Python:

  • Bruker _make()
  • Bruker _asdict()
  • Bruker ** (dobbeltstjerne) operator

Konvertering ved hjelp av _make()

Denne funksjonen brukes til å returnere en namedtuple() fra iterable vedtatt som argument. I dette eksemplet bruker vi _make() for å konvertere listen li til 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))>

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

Konverteringsoperasjon ved hjelp av _asdict()

Denne funksjonen returnerer de OrderedDict() som konstruert fra de kartlagte verdiene til namedtuple(). I dette eksemplet bruker vi _asdict() for å konvertere inndatalisten til namedtuple-forekomst.

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

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

Bruker ** (dobbeltstjerne) operator

Denne funksjonen brukes til å konvertere en ordbok til namedtuple(). I dette eksemplet bruker vi ** for å konvertere inndatalisten til namedtuple.

konvertere streng til dato
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))>

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

Ytterligere operasjoner

Det er noen tilleggsoperasjoner som er gitt i Python for NamedTuples:

  • _Enger
  • _erstatte()
  • __ny__()
  • __getnewargs__()

_Enger

Dette dataattributtet brukes til å få alle nøkkelnavnene av det deklarerte navnerommet. I dette eksemplet bruker vi _fields for å få alle nøkkelnavnene til navneområdet deklarert.

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

Produksjon
All the fields of students are : ('name', 'age', 'DOB')>

_erstatte()

_replace() er som str.replace() men målretter navngitte felt( endrer ikke de opprinnelige verdiene). I dette eksemplet bruker vi _replace() for å erstatte et navn fra Nandini til 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'))>

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

__ny__()

Denne funksjonen returnerer en ny forekomst av Student-klassen ved å ta verdiene som vi ønsker å tilordne tastene i den navngitte tupelen. I dette eksemplet bruker vi __new__() for å returnere en ny forekomst av Student-klassen.

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

Produksjon
Student(name='Himesh', age='19', DOB='26082003')>

__getnewargs__()

Denne funksjonen returnerer den navngitte tuppelen som en vanlig tuppel. I dette eksemplet gjør vi det samme ved å bruke __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__())>

Produksjon
('Himesh', '19', '26082003')>