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

วิธีการเรียงลำดับลิสต์ของ Dictionary ตามค่าใน Python

กำหนดลิสต์ของ dictionary ที่มี key 'name' และ 'roll' งานคือเรียงลำดับตามค่าต่างๆ

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

# Initializing list of dictionaries
my_list1 = [
    {"name": "Adwaita", "roll": 100},
    {"name": "Aadrika", "roll": 234},
    {"name": "Sakya", "roll": 23}
]

print("The list is sorted by roll: ")
print(sorted(my_list1, key=lambda i: i['roll']))

print("\nThe list is sorted by name and roll: ")
print(sorted(my_list1, key=lambda i: (i['roll'], i['name'])))

print("\nThe list is sorted by roll in descending order: ")
print(sorted(my_list1, key=lambda i: i['roll'], reverse=True))

ผลลัพธ์

The list is sorted by roll: 
[{'name': 'Sakya', 'roll': 23}, {'name': 'Adwaita', 'roll': 100}, {'name': 'Aadrika', 'roll': 234}]

The list is sorted by name and roll: 
[{'name': 'Sakya', 'roll': 23}, {'name': 'Adwaita', 'roll': 100}, {'name': 'Aadrika', 'roll': 234}]

The list is sorted by roll in descending order: 
[{'name': 'Aadrika', 'roll': 234}, {'name': 'Adwaita', 'roll': 100}, {'name': 'Sakya', 'roll': 23}]

คำอธิบายเทคนิค

  • key=lambda i: i['roll'] - เรียงตาม roll เดียว
  • key=lambda i: (i['roll'], i['name']) - เรียงตาม roll ก่อน ถ้าเท่ากันเรียงตาม name
  • reverse=True - เรียงจากมากไปน้อย (descending)
  • ฟังก์ชัน sorted() คืนลิสต์ใหม่ ไม่เปลี่ยนลิสต์เดิม (ใช้ list.sort() ถ้าต้องการแก้ไขที่เดิม)

ตัวอย่างเพิ่มเติม: เรียงหลายเกณฑ์

# เรียงตาม name แล้วค่อย roll
print(sorted(my_list1, key=lambda i: (i['name'], i['roll'])))

# เรียงตามความยาวชื่อ
print(sorted(my_list1, key=lambda i: len(i['name'])))

สรุป: ใช้ sorted() ร่วมกับ lambda และ tuple ใน key เพื่อเรียงหลายเงื่อนไขได้อย่างยืดหยุ่น