Computer >> Máy Tính >  >> Lập trình >> Python

Namedtuple bằng Python

NamedTuple là một lớp khác, trong mô-đun tập hợp. Giống như các đối tượng kiểu từ điển, nó chứa các khóa và được ánh xạ tới một số giá trị. Trong trường hợp này, chúng tôi có thể truy cập các phần tử bằng cách sử dụng các khóa và chỉ mục.

Để sử dụng nó, trước tiên chúng ta cần nhập nó vào mô-đun thư viện tiêu chuẩn của bộ sưu tập.

import collections

Trong phần này, chúng ta sẽ thấy một số chức năng của lớp NamedTuple.

Các phương thức truy cập của NamedTuple

Từ NamedTuple, chúng ta có thể truy cập các giá trị bằng cách sử dụng chỉ mục, khóa và phương thức getattr (). Các giá trị thuộc tính của NamedTuple được sắp xếp theo thứ tự. Vì vậy, chúng tôi có thể truy cập chúng bằng cách sử dụng các chỉ mục.

NamedTuple chuyển đổi tên trường thành thuộc tính. Vì vậy, sử dụng getattr () có thể lấy dữ liệu từ thuộc tính đó.

Mã mẫu

import collections as col
#create employee NamedTuple
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
#Add two employees
e1 = Employee('Asim', 'Delhi', '25000')
e2 = Employee('Bibhas', 'Kolkata', '30000')
#Access the elements using index
print('The name and salary of e1: ' + e1[0] + ' and ' + e1[2])
#Access the elements using attribute name
print('The name and salary of e2: ' + e2.name + ' and ' + e2.salary)
#Access the elements using getattr()
print('The City of e1 and e2: ' + getattr(e1, 'city') + ' and ' + getattr(e2, 'city'))

Đầu ra

The name and salary of e1: Asim and 25000
The name and salary of e2: Bibhas and 30000
The City of e1 and e2: Delhi and Kolkata

Quy trình chuyển đổi của NamedTuple

Có một số phương pháp để chuyển đổi các bộ sưu tập khác thành NamedTuple. Phương thức _make () có thể được sử dụng để chuyển đổi một đối tượng có thể lặp lại như list, tuple, v.v. thành đối tượng NamedTuple.

Chúng ta cũng có thể chuyển đổi một đối tượng kiểu từ điển sang đối tượng NamedTuple. Đối với chuyển đổi này, chúng tôi cần toán tử **.

NamedTuple có thể trả về các giá trị có khóa dưới dạng đối tượng kiểu OrderedDict. Để biến nó thành OrderDict, chúng ta phải sử dụng phương thức _asdict ().

Mã mẫu

import collections as col
#create employee NamedTuple
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
#List of values to Employee
my_list = ['Asim', 'Delhi', '25000']
e1 = Employee._make(my_list)
print(e1)
#Dict to convert Employee
my_dict = {'name':'Bibhas', 'city' : 'Kolkata', 'salary' : '30000'}
e2 = Employee(**my_dict)
print(e2)
#Show the named tuple as dictionary
emp_dict = e1._asdict()
print(emp_dict)

Đầu ra

Employee(name='Asim', city='Delhi', salary='25000')
Employee(name='Bibhas', city='Kolkata', salary='30000')
OrderedDict([('name', 'Asim'), ('city', 'Delhi'), ('salary', '25000')])

Một số thao tác bổ sung trên NamedTuple

Có một số phương thức khác như _fields () và _replace (). Sử dụng phương thức _fields (), chúng ta có thể kiểm tra các trường khác nhau của NamedTuple là gì. Phương thức _replace () được sử dụng để thay thế giá trị của một số giá trị khác.

Mã mẫu

import collections as col
#create employee NamedTuple
Employee = col.namedtuple('Employee', ['name', 'city', 'salary'])
#Add an employees
e1 = Employee('Asim', 'Delhi', '25000')
print(e1)
print('The fields of Employee: ' + str(e1._fields))
#replace the city of employee e1
e1 = e1._replace(city='Mumbai')
print(e1)

Đầu ra

Employee(name='Asim', city='Delhi', salary='25000')
The fields of Employee: ('name', 'city', 'salary')
Employee(name='Asim', city='Mumbai', salary='25000')