English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
NamedTuple es otro tipo en el módulo collections. Al igual que los objetos de tipo diccionario, contiene claves y se mapean a ciertos valores. En este caso, podemos acceder a los elementos usando claves e índices.
Primero, necesitamos importarlo del módulo estándar de conjuntos.
import collections
En esta sección, veremos algunas características del tipo NamedTuple.
En NamedTuple, podemos usar índices, claves ygetattr()
métodos para acceder a los valores. Los valores de las propiedades de NamedTuple son ordenados. De esta manera, podemos acceder a ellos usando índices.
NamedTuple convierte los nombres de los campos en propiedades. Por lo tanto, se usagetattr()
Se puede obtener datos de esta propiedad.
import collections as col #Crear un NamedTuple de empleado Employee = col.namedtuple('Employee', ['name', 'city', 'salary']) #Agregar dos empleados e1 = Employee('Asim', 'Delhi', '25000') e2 = Empleado('Bibhas', 'Kolkata', '''30000') #Acceder a los elementos usando índice print('El nombre y salario de e1: '' + e1[0] + '' y '' + e1[2]) #Acceder a los elementos usando el nombre del atributo print('El nombre y salario de e2: '' + e2.nombre + '' y '' + e2.salario) #Acceder a los elementos usando getattr()print('La Ciudad de e1 y e2: '' + getattr(e1, 'ciudad') + '' y '' + getattr(e2, 'ciudad'))
Resultados de salida
El nombre y salario de e1: Asim y 25000 El nombre y salario de e2: Bibhas y 30000 La Ciudad de e1 y e2: Delhi y Kolkata
Hay algunos métodos para convertir otros conjuntos en NamedTuple. El método _make() se puede usar para convertir objetos iterables (como listas, tuplas, etc.) en objetos NamedTuple.
También podemos convertir objetos de tipo diccionario en objetos NamedTuple. Para esta conversión, necesitamos**Operadores.
NamedTuple puede usar claves para devolver valores del tipo OrderedDict. Para que sea OrderedDict, debemos usar el método _asdict().
import collections as col #Crear un NamedTuple de empleado Employee = col.namedtuple('Employee', ['name', 'city', 'salary']) #Lista de valores para Empleado my_list = ['Asim', 'Delhi', '}}25000'] e1 = Employee._make(my_list) print(e1) #Diccionario para convertir Employee my_dict = {'name':'Bibhas', 'city' : 'Kolkata', 'salary' : '30000'} e2 = Employee(**my_dict) print(e2) #Mostrar la tupla nombrada como diccionario emp_dict = e1._asdict() print(emp_dict)
Resultados de salida
Employee(name='Asim', city='Delhi', salary='25000') Employee(name='Bibhas', city='Kolkata', salary='30000') OrderedDict([('name', 'Asim'), ('city', 'Delhi'), ('salary', '25000')])
Hay otras algunas métodos, como _fields() y _replace(). El método _fields() nos permite verificar los diferentes campos de NamedTuple. El método _replace() se utiliza para reemplazar otros valores.
import collections as col #Crear un NamedTuple de empleado Employee = col.namedtuple('Employee', ['name', 'city', 'salary']) #Agregar un empleado e1 = Employee('Asim', 'Delhi', '25000') print(e1) print('Los campos de Employee: ' + str(e1._fields)) #Reemplazar la ciudad del empleado e1 e1 = e1._replace(city='Mumbai') print(e1)
Resultados de salida
Employee(name='Asim', city='Delhi', salary='25000') Los campos de Employee: ('name', 'city', 'salary') Employee(name='Asim', city='Mumbai', salary='25000')