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