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

จะจัดเรียงพจนานุกรมใน Python ด้วยคีย์ได้อย่างไร?


การกระจายมาตรฐานของ Python ประกอบด้วยโมดูลคอลเลกชัน มีคำจำกัดความของประเภทข้อมูลคอนเทนเนอร์ที่มีประสิทธิภาพสูง OrderedDict เป็นคลาสย่อยของพจนานุกรมที่จดจำลำดับของรายการที่เพิ่มในอ็อบเจกต์พจนานุกรม เมื่อวนซ้ำในพจนานุกรมที่เรียงลำดับ รายการจะถูกส่งคืนตามลำดับที่เพิ่มคีย์ในครั้งแรก

>>> from collections import OrderedDict
>>> D = {5:'fff', 3:'ttt', 1:'ooo',4:'bbb', 2:'ddd'}
>>> OrderedDict(D.items())
 OrderedDict([(5, 'fff'), (3, 'ttt'), (1, 'ooo'), (4, 'bbb'), (2, 'ddd')])

นอกจากนี้เรายังต้องใช้ sorted() ฟังก์ชั่นที่เรียงลำดับองค์ประกอบใน iterable ในลำดับที่ระบุ ฟังก์ชันรับฟังก์ชันเป็นอาร์กิวเมนต์ซึ่งใช้เป็นคีย์สำหรับการเรียงลำดับ เนื่องจากเราตั้งใจจะจัดเรียงพจนานุกรมบนคีย์ เราจึงนำองค์ประกอบที่ 0 ของ tuple เป็นคีย์สำหรับการเรียงลำดับ

>>> D = {5:'fff', 3:'ttt', 1:'ooo',4:'bbb', 2:'ddd'}
>>> OrderedDict(sorted(D.items(), key = lambda t: t[0]))
   OrderedDict([(1, 'ooo'), (2, 'ddd'), (3, 'ttt'), (4, 'bbb'), (5, 'fff')])

วัตถุ OrderedDict สามารถแยกวิเคราะห์เป็นวัตถุพจนานุกรมทั่วไปได้

>>> D1 = dict(OrderedDict(sorted(D.items(), key = lambda t: t[0])))
>>> D1
   {1: 'ooo', 2: 'ddd', 3: 'ttt', 4: 'bbb', 5: 'fff'}