基于共同属性匹配Student与School对象列表并关联的高效实现问询
优化方案
你现在用嵌套循环的方式确实效率很低,尤其是当两个列表数据量变大时,时间复杂度会达到O(n*m)。可以用字典做映射来优化,把整体时间复杂度降到O(n+m),具体实现如下:
首先,将所有学校按value属性存入字典,这样查找对应学校的操作是O(1)的时间复杂度:
# 构建学校字典:key为value属性值,value为对应的School对象 school_dict = {school.value: school for school in School_List}
然后遍历学生列表,直接通过字典找到匹配的学校并添加学生:
for student in Student_List: # 检查字典中是否存在对应value的学校 if student.value in school_dict: school_dict[student.value].students.append(student)
处理后,对应value的学生会被正确添加到学校的students列表中:
- School(1)的
students会包含两个Student(1)对象 - School(3)的
students会包含两个Student(3)对象 - School(5)的
students会包含一个Student(5)对象
其余学校的students列表保持为空,完全符合需求。
内容的提问来源于stack exchange,提问作者user19678327
相关产品推荐
相关产品推荐

