示例代码:
from pprint import pprint
# Sample test data
students = [
{'name': 'Student A', 'score': 650, 'preferences': ['University 1', 'University 2', 'University 3']},
{'name': 'Student B', 'score': 620, 'preferences': ['University 1', 'University 3', 'University 2']},
{'name': 'Student C', 'score': 630, 'preferences': ['University 2', 'University 1', 'University 3']},
{'name': 'Student D', 'score': 610, 'preferences': ['University 1', 'University 2', 'University 3']},
{'name': 'Student E', 'score': 640, 'preferences': ['University 3', 'University 1', 'University 2']}
]
universities = {
'University 1': {'capacity': 2, 'admitted': []},
'University 2': {'capacity': 2, 'admitted': []},
'University 3': {'capacity': 2, 'admitted': []}
}
# Sort students by score in descending order
students_sorted = sorted(students, key=lambda x: x['score'], reverse=True)
# print(f'students_sorted:')
# pprint(students_sorted)
# Allocate students to universities based on their preferences and scores
for student in students_sorted:
for preference in student['preferences']:
if len(universities[preference]['admitted']) < universities[preference]['capacity']:
universities[preference]['admitted'].append(student['name'])
break
# Display the results
results = {uni: data['admitted'] for uni, data in universities.items()}
pprint(results)
运行结果:
{'University 1': ['Student A', 'Student B'],
'University 2': ['Student C', 'Student D'],
'University 3': ['Student E']}
【 在 torcher 的大作中提到: 】
: 一方面要保证某个学生高校里从前志愿往后志愿录取,另一方面,保证高校从报考的学生里高分往低分录取。过去没有计算机处理,只靠 ...
--
FROM 74.88.40.*