English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tuple nominate in Python

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.

metodi di accesso di 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à.

Esempio di codice

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

Il processo di conversione di NamedTuple

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

Esempio di codice

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

Altre operazioni su NamedTuple

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.

Esempio di codice

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