22 lines
648 B
Python
22 lines
648 B
Python
import bisect
|
|
from collections import defaultdict
|
|
from typing import List, DefaultDict
|
|
|
|
|
|
class School:
|
|
def __init__(self) -> None:
|
|
self.student_db: DefaultDict[int, List[str]] = defaultdict(list)
|
|
|
|
def add_student(self, name: str, grade: int) -> None:
|
|
bisect.insort(self.student_db[grade], name)
|
|
|
|
def grade(self, grade_number: int) -> List[str]:
|
|
|
|
if grade_number not in self.student_db.keys():
|
|
return []
|
|
|
|
return self.student_db[grade_number]
|
|
|
|
def roster(self) -> List[str]:
|
|
return sum([self.grade(grade_number) for grade_number
|
|
in sorted(self.student_db)], [])
|