เมื่อต้องการเรียงลำดับลิสต์ที่มีดิกชันนารีเป็นองค์ประกอบ ตามค่าเฉพาะ (เช่น age) ใช้ sorted() กับ lambda
ตัวอย่างโค้ด
from operator import itemgetter
people = [
{"name": "Will", "age": 56},
{"name": "Rob", "age": 20},
{"name": "Mark", "age": 34},
{"name": "John", "age": 24}
]
print("Sorted by age:")
print(sorted(people, key=lambda x: x['age']))
print("Sorted by age then name:")
print(sorted(people, key=lambda x: (x['age'], x['name'])))
print("Sorted by age descending:")
print(sorted(people, key=lambda x: x['age'], reverse=True))ผลลัพธ์
Sorted by age: [{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]
Sorted by age then name: [{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]
Sorted by age descending: [{'name': 'Will', 'age': 56}, {'name': 'Mark', 'age': 34}, {'name': 'John', 'age': 24}, {'name': 'Rob', 'age': 20}]คำอธิบาย
lambda x: x['age']ดึงค่า age มาเป็นเกณฑ์การเรียงlambda x: (x['age'], x['name'])เรียงตาม age ก่อน แล้วค่อย name (tuple comparison)reverse=Trueเรียงจากมากไปน้อยLambda ใช้สร้างฟังก์ชันนิรนามสั้นๆ สำหรับ key function