Sắp xếp Đa tiêu chí Sản phẩm với sorted() và Khóa Tuple
Viết hàm sort_ecommerce_products(products: list[dict], primary_key: str = "category", secondary_key: str = "rating") -> list[dict]:
Tiến độ của tôi ở bài này
Điểm được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: sorted, key function.
Nội dung đề bài
Mục tiêu kiến thức
- Sử dụng hàm
sorted()kết hợp tham sốkey=lambda x: (...). - Xử lý sắp xếp đa cấp độ hỗn hợp (vừa tăng dần, vừa giảm dần trong cùng 1 lần duyệt bằng kỹ thuật phủ định dấu số học
-rating). - Đảm bảo tính ổn định (Timsort Stability) và không thay đổi danh sách gốc.
Mô tả bài toán
Viết hàm sort_ecommerce_products(products: list[dict], primary_key: str = "category", secondary_key: str = "rating") -> list[dict]: Mỗi sản phẩm có dạng: {"id": int, "name": str, "category": str, "rating": float, "price": float}. Sắp xếp theo thứ tự ưu tiên:
category: theo thứ tự bảng chữ cái tăng dần (A -> Z).rating: theo điểm đánh giá giảm dần (cao đến thấp).price: nếu cùng danh mục và cùng rating, ưu tiên giá rẻ hơn (tăng dần).- Trả về danh sách mới, danh sách gốc không bị thay đổi in-place.
Input
- Các tham số truyền vào hàm/lớp sort_ecommerce_products hoặc dữ liệu đầu vào theo định dạng mô tả.
Output
- Kết quả trả về của hàm/lớp sort_ecommerce_products hoặc dữ liệu in ra màn hình theo đúng đặc tả.
Ràng buộc
- Thời gian chạy tối đa: 1000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào tuân thủ đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
sort_ecommerce_products(products=[{'id': 1, 'name': 'Phone A', 'category': 'Electronics', 'rating': 4.5, 'price': 500.0}, {'id': 2, 'name': 'Phone B', 'category': 'Electronics', 'rating': 4.8, 'price': 800.0}, {'id': 3, 'name': 'Shirt', 'category': 'Apparel', 'rating': 4.2, 'price': 50.0}])Output
[3, 2, 1]Giải thích
Hàm được gọi với các tham số mẫu trên và trả về kết quả chính xác theo yêu cầu.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
