Menu
CoddyTech

Chuyển đổi dữ liệu

Thuộc phần Logic và luồng chương trình trong hành trình Python của Coddy. Bài học 78 trên 78.

challenge icon

Thử thách

Khó

Tạo một hàm có tên transform_dataset để xử lý danh sách hồ sơ học sinh nhằm phân tích.

Mỗi hồ sơ là một từ điển gồm:

  • student_id: Mã định danh duy nhất của học sinh
  • grades: Danh sách điểm số
  • subjects: Danh sách các môn học mà học sinh đang theo học

Hàm của bạn cần:

  1. Tính điểm trung bình của mỗi học sinh
  2. Chỉ đưa vào những học sinh có tất cả điểm trên 70 (học sinh đủ điều kiện). Bạn nên dùng hàm all() của Python để kiểm tra điều kiện này
  3. Tạo bản tổng hợp các môn học mà học sinh đủ điều kiện theo học, đếm số học sinh đủ điều kiện theo học từng môn
  4. Trả về một từ điển có hai khóa:
    • qualified_students: Từ điển ánh xạ mã học sinh với điểm trung bình của học sinh đó, được làm tròn đến 2 chữ số thập phân
    • subject_summary: Từ điển ánh xạ môn học với số học sinh đủ điều kiện theo học môn đó

Lưu ý: Hàm all() trong Python chỉ trả về True nếu tất cả phần tử trong đối tượng có thể lặp đều là true. Ví dụ, all(grade > 70 for grade in grades) chỉ trả về True nếu mọi điểm đều trên 70.

Đầu vào mẫu:

[
    {
        "student_id": "S123", 
        "grades": [88, 92, 85], 
        "subjects": ["Math", "Science", "History"]
    },
    {
        "student_id": "S124", 
        "grades": [65, 95, 80], 
        "subjects": ["Math", "Science", "English"]
    },
    {
        "student_id": "S125", 
        "grades": [91, 89, 92], 
        "subjects": ["Math", "Physics", "History"]
    }
]

Đầu ra mẫu:

{
    'qualified_students': {'S123': 88.33, 'S125': 90.67}, 
    'subject_summary': {'Math': 2, 'Science': 1, 'History': 2, 'Physics': 1}
}

Tự làm thử

def transform_dataset(data):
    # Viết lời giải của bạn ở đây
    
    # Bước 1: Tính điểm trung bình của từng học sinh và lọc ra những học sinh đủ điều kiện
    # (học sinh có tất cả các điểm trên 70)
    
    # Bước 2: Tạo bản tóm tắt các môn học của những học sinh đủ điều kiện
    
    # Bước 3: Trả về từ điển cuối cùng với qualified_students và subject_summary
    pass

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch Python online