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

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

Sử dụng sorted() với key=lambda để sắp xếp list các dictionary theo một hoặc nhiều trường.

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 tăng dần:")
print(sorted(data, key=lambda x: x['age']))

print("\nTheo age rồi name:")
print(sorted(data, key=lambda x: (x['age'], x['name'])))

print("\nTheo age giảm dần:")
print(sorted(data, key=lambda x: x['age'], reverse=True))

Kết quả

Theo age tăng dần:
[{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]

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

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

Giải thích

  • key=lambda x: x['age'] trích xuất giá trị age để so sánh.
  • key=lambda x: (x['age'], x['name']) sắp xếp theo age trước, nếu bằng thì theo name.
  • reverse=True đảo ngược thứ tự.
  • Lambda linh hoạt, dễ đọc cho logic đơn giản.