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.