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.
Pythonfrom 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 123moviesPython
# 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 LinuxPython
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.
Pythonimport 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.
Pythonimport 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'.
Pythonimport 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.
Pythonimport 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__().
Pythonimport 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') 
- Mutabilità : Le istanze di una classe possono essere mutabili o immutabili while
namedtuplele istanze sono immutabili.- Metodi : Le classi possono contenere metodi (funzioni) while
namedtuplefornisce principalmente un modo per archiviare dati con campi denominati.- Eredità : Le classi supportano l'ereditarietà consentendo la creazione di gerarchie complesse mentre
namedtuplenon supporta l'ereditarietà.
Qual è la differenza tra dict tipizzato e nametuple?
- 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.- Mutabilità :
TypedDictle istanze sono mutabili consentendo modifiche ai valori whilenamedtuplele istanze sono immutabili.- Struttura :
TypedDictviene utilizzato per definire la struttura dei dizionari con tipi specifici per ciascuna chiave mentrenamedtuplefornisce campi con nome per dati simili a tuple.
