logo

Namedtuple in Python

Python supporta un tipo di dizionario contenitore chiamato nometupla() presente nel modulo collezioni . In questo articolo vedremo come creare una NameTuple e le operazioni su NamedTuple.

Cos'è NamedTuple in Python?

In Pitone , NamedTuple è presente all'interno del file modulo collezioni . Fornisce un modo per creare strutture dati semplici e leggere simili a una classe, ma senza il sovraccarico della definizione di una classe completa. Come i dizionari, contengono chiavi con hash su un valore particolare. Al contrario, supporta sia l'accesso da valore-chiave che l'iterazione, la funzionalità that dizionari mancanza.



Sintassi Python NamedTuple

denominatatuple(nometipo, nomi_campo)

  • typename – Il nome della tupla denominata.
  • field_names – L'elenco degli attributi archiviati nella nametuple.

Esempio: L'implementazione del codice di NamedTuple è mostrata in Pitone .

la scorciatoia tutta maiuscola Excel
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)>

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

Operazioni su NamedTuple

Di seguito sono riportate le seguenti operazioni che possono essere eseguite utilizzando nametuple():



  • Crea una NameTuple
  • Accedi alle operazioni
  • Operazioni di conversione
  • Operazioni aggiuntive

Crea una NameTuple in Python

Questo crea una nuova classe denominata tuple utilizzando la funzione denominata tuple() dal file collezioni modulo. Il primo argomento è il nome della nuova classe e il secondo argomento è un elenco di nomi di campi.

età del dharmendra
Python3
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(x=1, y=2) print(p.x, p.y)>

Produzione
1 2>

Accedi alle operazioni

Le namedtuple in Python forniscono modi convenienti per accedere ai propri campi. Di seguito sono riportate alcune operazioni di accesso fornite in Python per NamedTuple:

  • Accesso tramite indice
  • Accesso tramite nome chiave
  • Accedi utilizzando getattr()

Accesso tramite indice

I valori degli attributi di nametuple() sono ordinati ed è possibile accedervi utilizzando il numero di indice a differenza dei dizionari che non sono accessibili tramite indice. In questo esempio, stiamo accedendo a quello dello studente utilizzando il file index.



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

Produzione
The Student age using index is : 19>

Accesso tramite nome chiave

È consentito anche l'accesso tramite nome chiave come nei dizionari. In questo esempio, stiamo utilizzando il nome chiave per accedere al nome dello studente.

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

Produzione
The Student name using keyname is : Nandini>

Accedi utilizzando getattr()

Questo è ancora un altro modo per accedere al valore fornendo nametuple e key value come argomento. In questo esempio, stiamo utilizzando getattr() per accedere all'ID dello studente nella nametuple specificata.

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

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

Operazioni di conversione

Namedtuple fornisce alcune utili operazioni di conversione per lavorare con altri tipi di dati Pitone . Di seguito sono riportate le seguenti operazioni di conversione fornite per nametuple in Python:

entità relazionale
  • Utilizzando _make()
  • Utilizzando _asdict()
  • Utilizzando l'operatore ** (doppia stella).

Conversione utilizzando _make()

Questa funzione viene utilizzata per restituire a nametuple() dall'iterabile passato come argomento. In questo esempio, stiamo usando _make() per convertire la lista li in nametuple.

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

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

Operazione di conversione utilizzando _asdict()

Questa funzione ritorna IL OrdinatoDict() come costruito dai valori mappati di nametuple(). In questo esempio, stiamo utilizzando _asdict() per convertire l'elenco di input nell'istanza denominata tuple.

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

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

Utilizzando l'operatore ** (doppia stella).

Questa funzione viene utilizzata per convertire un dizionario nel nametuple(). In questo esempio, stiamo usando ** per convertire l'elenco di input in nametuple.

creazione di elenchi in Java
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))>

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

Operazioni aggiuntive

Ci sono alcune operazioni aggiuntive fornite in Pitone per NamedTuple:

  • _campi
  • _sostituire()
  • __nuovo__()
  • __getnewargs__()

_campi

Questo attributo di dati viene utilizzato per ottenere tutti i nomi chiave dello spazio dei nomi dichiarato. In questo esempio, stiamo utilizzando _fields per ottenere tutti i nomi chiave dello spazio dei nomi dichiarati.

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

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

_sostituire()

_replace() è come str.replace() ma prende di mira i campi denominati (non modifica i valori originali). In questo esempio, stiamo utilizzando _replace() per sostituire un nome da Nandini a 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'))>

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

__nuovo__()

Questa funzione restituisce una nuova istanza della classe Student, prendendo i valori che vogliamo assegnare alle chiavi nella tupla denominata. In questo esempio, stiamo utilizzando __new__() per restituire una nuova istanza della classe 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'))>

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

__getnewargs__()

Questa funzione restituisce la tupla denominata come una tupla semplice. In questo esempio, stiamo facendo lo stesso usando __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__())>

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