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)