English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
NamedTuple è un'altra classe del modulo collections. Come gli oggetti di tipo dizionario, contiene chiavi e le mappa a determinati valori. In questo caso, possiamo accedere agli elementi utilizzando le chiavi e gli indici.
Per prima cosa, dobbiamo importare il modulo standard di collection.
import collections
In questa sezione, vedremo alcune funzionalità della classe NamedTuple.
In NamedTuple, possiamo utilizzare l'indice, la chiave egetattr()
metodo per accedere ai valori. I valori degli attributi di NamedTuple sono ordinati. In questo modo possiamo accedervi utilizzando l'indice.
NamedTuple converte i nomi dei campi in attributi. Pertanto, utilizzaregetattr()
Puoi ottenere dati da questa proprietà.
import collections as col #Crea un NamedTuple employee Employee = col.namedtuple('Employee', ['name', 'city', 'salary']) #Aggiungi due dipendenti e1 = Employee('Asim', 'Delhi', '25000') e2 = Dipendente('Bibhas', 'Kolkata', '30000') #Accedi agli elementi utilizzando l'indice print('Il nome e lo stipendio di e1: ' + e1[0] + ' e ' + e1[2]) #Accedi agli elementi utilizzando il nome dell'attributo print('Il nome e lo stipendio di e2: ' + e2.name + ' e ' + e2.salary) #Accedi agli elementi utilizzando getattr()print('La città di e1 e e2: ' + getattr(e1, 'city') + ' e ' + getattr(e2, 'city'))
Risultato di output
Il nome e lo stipendio di e1: Asim e 25000 Il nome e lo stipendio di e2: Bibhas e 30000 La città di e1 e e2: Delhi e Kolkata
Esistono alcuni metodi per convertire altri insiemi in NamedTuple. Il metodo _make() può essere utilizzato per convertire oggetti iterabili (come liste, tuple, ecc.) in oggetti NamedTuple.
Possiamo anche convertire oggetti di tipo dizionario in oggetti NamedTuple. Per questa conversione, abbiamo bisogno dell'operatore **.
NamedTuple può utilizzare le chiavi per restituire oggetti di tipo OrderedDict. Per farlo diventare OrderedDict, dobbiamo utilizzare il metodo _asdict().
import collections as col #Crea un NamedTuple employee Employee = col.namedtuple('Employee', ['name', 'city', 'salary']) #Elenco dei valori per Dipendente my_list = ['Asim', 'Delhi', '25000'] e1 = Dipendente._make(my_list) print(e1) #Dicta per convertire Dipendente my_dict = {'name':'Bibhas', 'city' : 'Kolkata', 'salary' : '30000'} e2 = Employee(**my_dict) print(e2) #Mostra il named tuple come dizionario emp_dict = e1._asdict() print(emp_dict)
Risultato di output
Employee(name='Asim', city='Delhi', salary='25000') Employee(name='Bibhas', city='Kolkata', salary='30000') OrderedDict([('name', 'Asim'), ('city', 'Delhi'), ('salary', '25000')])
Ci sono altri metodi, come _fields() e _replace(). Il metodo _fields() ci permette di controllare i diversi campi del NamedTuple. Il metodo _replace() viene utilizzato per sostituire altri valori.
import collections as col #Crea un NamedTuple employee Employee = col.namedtuple('Employee', ['name', 'city', 'salary']) #Aggiungi un employee e1 = Employee('Asim', 'Delhi', '25000') print(e1) print('I campi di Employee: ' + str(e1._fields)) #Sostituisci la città dell'employee e1 e1 = e1._replace(city='Mumbai') print(e1)
Risultato di output
Employee(name='Asim', city='Delhi', salary='25000') I campi di Employee: ('name', 'city', 'salary') Employee(name='Asim', city='Mumbai', salary='25000')