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 ตามลำดับที่ระบุ ฟังก์ชันรับฟังก์ชันเป็นอาร์กิวเมนต์ซึ่งใช้เป็นคีย์สำหรับการเรียงลำดับ เนื่องจากเราตั้งใจจะจัดเรียงพจนานุกรมตามค่าต่างๆ เราจึงนำองค์ประกอบที่ 1 ของ tuple เป็นกุญแจสำคัญในการจัดเรียง

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

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

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