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.

attrice cinematografica rekha

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 dal valore-chiave sia l'iterazione della funzionalità that dizionari mancanza.



Sintassi Python NamedTuple

denominatatuple(nometipo nomi_campo)

  • typename - Il nome della tupla denominata.
  • field_names - L'elenco degli attributi memorizzati nella denominata tuple.

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

Python
# 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():



che ha inventato la scuola
  • 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.

Python
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.



Python
# 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 utilizziamo il nome chiave per accedere al nome dello studente.

siti web di film simili a 123movies
Python
# 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 usando getattr() per accedere all'id dello studente nella nametuple specificata.

Python
# 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:

  • 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.

Python
# 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 usando _asdict() per convertire l'elenco di input nell'istanza di nametuple.

directory di rinomina di Linux
Python
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')]) 

Utilizzo dell'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.

Python
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.

Python
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 usando _replace() per sostituire un nome da 'Nandini' a 'Manjeet'.

Python
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 Studente 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.

Python
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(nameageDOB) 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__().

Python
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') 
    1. Mutabilità : Le istanze di una classe possono essere mutabili o immutabili whilenamedtuplele istanze sono immutabili.
    2. Metodi : Le classi possono contenere metodi (funzioni) whilenamedtuplefornisce principalmente un modo per archiviare dati con campi denominati.
    3. Eredità : Le classi supportano l'ereditarietà consentendo la creazione di gerarchie complesse mentrenamedtuplenon supporta l'ereditarietà.

    Qual è la differenza tra dict tipizzato e nametuple?

    1. Tipo Controllo :TypedDict(datypingmodule) fornisce suggerimenti sul tipo per i dizionari con coppie chiave-valore specifiche utili per il controllo del tipo.namedtuplenon fornisce suggerimenti sul tipo.
    2. Mutabilità :TypedDictle istanze sono mutabili consentendo modifiche ai valori whilenamedtuplele istanze sono immutabili.
    3. Struttura :TypedDictviene utilizzato per definire la struttura dei dizionari con tipi specifici per ciascuna chiave mentrenamedtuplefornisce campi con nome per dati simili a tuple.