Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Sắp xếp list dictionary theo value dùng itemgetter Python

Sử dụng operator.itemgetter thay lambda để sắp xếp list dictionary, nhanh hơn một chút và dễ đọc.

Ví dụ

from operator import itemgetter

data = [
    {"name": "Will", "age": 56},
    {"name": "Rob", "age": 20},
    {"name": "Mark", "age": 34},
    {"name": "John", "age": 24}
]

print("Theo age:")
print(sorted(data, key=itemgetter('age')))

print("\nTheo age, name:")
print(sorted(data, key=itemgetter('age', 'name')))

print("\nTheo age giảm:")
print(sorted(data, key=itemgetter('age'), reverse=True))

Kết quả

Theo age:
[{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]

Theo age, name:
[{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]

Theo age giảm:
[{'name': 'Will', 'age': 56}, {'name': 'Mark', 'age': 34}, {'name': 'John', 'age': 24}, {'name': 'Rob', 'age': 20}]

Giải thích

  • itemgetter('age') trả về callable lấy trường 'age' từ dict.
  • itemgetter('age', 'name') trả về tuple (age, name) để so sánh đa cấp.
  • Hiệu năng tốt hơn lambda nhẹ, code rõ ràng hơn.
  • Phù hợp cho sắp xếp phức tạp, nhiều trường.