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

OrderDict bằng Python

OrderedDict là một lớp con của đối tượng dict trong Python. Sự khác biệt duy nhất giữa OrderedDict và dict là, trong OrderedDict, nó duy trì thứ tự của các khóa khi được chèn. Trong mệnh lệnh, thứ tự có thể xảy ra hoặc không.

OrderedDict là một lớp thư viện tiêu chuẩn, nằm trong bộ sưu tập mô-đun.

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

import collections

Trong phần này, chúng ta sẽ thấy một số thao tác trên OrderedDict và sự khác biệt giữa OrderedDict và Dict.

Chúng ta có thể đặt một số khóa và giá trị trong Dict và OrderDict. Trong ví dụ này, chúng ta có thể thấy rằng thứ tự của Dict có thể khác nhau. Nhưng đối với OrderDict. Nó sẽ được sửa.

Mã mẫu

import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
   print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)

Đầu ra

('AA', 11)
('CC', 33)
('BB', 22)
('DD', 44)

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)

Thay đổi giá trị của một khóa được chỉ định

Khi giá trị của một khóa được chỉ định được thay đổi, thứ tự của các khóa sẽ không thay đổi đối với OrderDict. Chúng ta có thể thấy rằng câu lệnh có thể đúng hoặc có thể không đúng với các đối tượng kiểu Dict.

Mã mẫu

import collections
#Create normal dict
my_dict = {}
my_dict['AA'] = 11
my_dict['BB'] = 22
my_dict['CC'] = 33
my_dict['DD'] = 44
for item in my_dict.items():
   print(item)
#Change the value for key BB
my_dict['BB'] = 100
print('After changing in Dict')
for item in my_dict.items():
   print(item)
print()
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)
#Change the value for key BB
my_ord_dict['BB'] = 100
print('After changing in Ordered Dict')
for item in my_ord_dict.items():
   print(item)

Đầu ra

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Dict
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 100)

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After changing in Ordered Dict
('AA', 11)
('BB', 100)
('CC', 33)
('DD', 44)

Xóa và Chèn lại các phần tử trong OrderDict

Khi một phần tử bị xóa khỏi OrderedDict và thực hiện thao tác chèn lại khóa và giá trị đó, nó sẽ đẩy nó về phía sau. Mặc dù nó vẫn duy trì thứ tự trong khi chèn, nhưng để xóa, nó sẽ xóa thông tin đặt hàng và coi như mục nhập mới để chèn lại.

Mã mẫu

import collections
#Create ordered dict
my_ord_dict = collections.OrderedDict()
my_ord_dict['AA'] = 11
my_ord_dict['BB'] = 22
my_ord_dict['CC'] = 33
my_ord_dict['DD'] = 44
for item in my_ord_dict.items():
   print(item)
#Delete item in key BB
my_ord_dict.pop('BB')
print('After Deleting')
for item in my_ord_dict.items():
   print(item)
#re-inserting item 
my_ord_dict['BB'] = 22
print('After Re-inserting')
for item in my_ord_dict.items():
   print(item)    

Đầu ra

('AA', 11)
('BB', 22)
('CC', 33)
('DD', 44)
After Deleting
('AA', 11)
('CC', 33)
('DD', 44)
After Re-inserting
('AA', 11)
('CC', 33)
('DD', 44)
('BB', 22)