class Student:
def __init__(self, surname, mark1, mark2, mark3, group):
self.surname = surname
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
self.group = group
stud_list = [
Student('Иванов', 4, 4, 5, 'Группа 1'),
Student('Петров', 3, 4, 3, 'Группа 2'),
Student('Сидоров', 5, 4, 5, 'Группа 1')
]
def create_sorted_dict(students):
# получаем список групп
groups = set([s.group for s in students])
# создаем шаблон выходного списка
res = {g: {'Студенты': [], 'Средний балл': 0} for g in groups}
# добавляем фамилии студентов и их оценки
for stud in students:
res[stud.group]['Студенты'].append({stud.surname: [stud.mark1, stud.mark2, stud.mark3]})
# считаем средний балл
for k, v in res.items():
avg_ball = 0
for _stud in v['Студенты']:
for balls in _stud.values():
avg_ball += balls[0] + balls[1] + balls[2]
v['Средний балл'] = (round(avg_ball / (len(v['Студенты']) * 3), 2))
return sorted(res.items(), key = lambda x: x[1]['Средний балл'], reverse=True)
print(create_sorted_dict(stud_list))
{'Номер группы': {'Студенты': [{'Иванов': [3,4,4] ...}], 'Средний балл': 0}}
sqlite блокирует файл во время записи. Используй mysql, postgres