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

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


ใช้ 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 ทุกประการ