ใช้ operator.itemgetter แทน 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=itemgetter('age')))
print("Sorted by age and name:")
print(sorted(people, key=itemgetter('age', 'name')))
print("Sorted by age descending:")
print(sorted(people, key=itemgetter('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 and 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}]คำอธิบาย
itemgetter('age')สร้างฟังก์ชันดึงค่า 'age' เร็วกว่า lambda เล็กน้อยitemgetter('age', 'name')ดึงค่าทั้งสองเป็นทัพเพิลสำหรับการเรียงหลายระดับเหมาะสำหรับข้อมูลขนาดใหญ่หรือโค้ดที่ต้องการความชัดเจน
ผลลัพธ์เหมือนกับ lambda version ทุกประการ