Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

OrderedDict ใน Python


OrderedDict เป็นคลาสย่อยของอ็อบเจกต์ dict ใน Python ความแตกต่างเพียงอย่างเดียวระหว่าง OrderedDict และ dict คือใน OrderedDict จะรักษาลำดับของคีย์ตามที่แทรกไว้ ใน dict การเรียงลำดับอาจเกิดขึ้นหรือไม่เกิดขึ้นก็ได้

OrderedDict เป็นคลาสไลบรารีมาตรฐาน ซึ่งอยู่ใน collections โมดูล

หากต้องการใช้งานในตอนแรก เราต้องนำเข้า คอลเลกชัน โมดูลห้องสมุดมาตรฐาน

import collections

ในส่วนนี้ เราจะเห็นการดำเนินการบางอย่างเกี่ยวกับ OrderedDict และความแตกต่างระหว่าง OrderedDict และ Dict

เราสามารถใส่คีย์และค่าบางอย่างใน Dict และ OrderedDict ในตัวอย่างนี้ เราจะเห็นว่าการเรียงลำดับของ Dict อาจแตกต่างกันไป แต่สำหรับ OrderedDict จะได้รับการแก้ไข

โค้ดตัวอย่าง

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)

ผลลัพธ์

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

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

การเปลี่ยนค่าของคีย์ที่ระบุ

เมื่อค่าของคีย์ที่ระบุเปลี่ยนไป ลำดับของคีย์จะไม่เปลี่ยนแปลงสำหรับ OrderedDict เราจะเห็นว่าคำสั่งนั้นอาจจะจริงหรือไม่จริงก็ได้สำหรับอ็อบเจกต์ประเภท Dict

โค้ดตัวอย่าง

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)

ผลลัพธ์

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

การลบและการใส่องค์ประกอบกลับเข้าไปใน OrderedDict

เมื่อองค์ประกอบหนึ่งถูกลบออกจาก OrderedDict และดำเนินการแทรกอีกครั้งกับคีย์และค่านั้น องค์ประกอบดังกล่าวจะผลักไปที่ด้านหลัง แม้ว่าจะรักษาลำดับในขณะที่แทรก แต่สำหรับการลบ มันจะลบข้อมูลการสั่งซื้อ และถือเป็นรายการใหม่สำหรับการแทรกอีกครั้ง

โค้ดตัวอย่าง

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)    

ผลลัพธ์

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