I have written a code that collects student's assignment/exam results and puts into a list of student dictionary object. Within the code there is also a dictionary that consist of the weightage of each assignment or exam. This then allows me to calculate the weighted results. How can I implement error handling into this code so that an error can be raised if weights dictionary contains entries that don't match the ones stored in the student dictionary?
For example: Student Dict: A1, A2, A3 Weights: A1, E1 (Error is raised since E1 isn't present)
[Current code]
class Student:
# Part 1a: Creating student class
    def __init__(self, stud_dict):
        self.name = stud_dict['name']
        self.results = stud_dict['results'].copy()
# Part 2: Getting weighted result
    def get_weighted_result(self, weights):
        result = 0
        for key in weights:
            result += weights[key] * self.results[key]
        return result
# Part 1b: Converting student dictionary list to student object list
def dict_to_class_obj(stud_dicts):
    students = []
    for stud_dict in stud_dicts:
        students.append(Student(stud_dict))
    return students
#Test Section
stud_dicts = [
    {
        "name": "Fus Ro Dah",
        "results": {
            "assignment_1": 10,
            "assignment_2": 10,
            "examination_1": 10,
        }
    },
    {
        "name": "Foo Barry",
        "results": {
            "assignment_1": 1,
            "assignment_2": 2,
            "examination_1": 3,
        }
    },
]
# creating Student objects list
students = dict_to_class_obj(stud_dicts)
print(students[0].name)
print(students[0].results)
print(students[0].get_weighted_result({"assignment_1": 1.0, "examination_1": 9.0}))  
 
     
    