包含多种顺序文档排序按特定顺序排序

如题
文档如下

语文,101,小张,80
语文,102,小王,82
语文,103,小李,80
语文,104,小赵,94
语文,105,小强,85
数学,101,小张,98
数学,102,小王,97
数学,103,小李,84
数学,104,小赵,93
数学,105,小强,94
英语,101,小张,99
英语,102,小王,80
英语,103,小李,91
英语,104,小赵,91
英语,105,小强,95

写法如下

def student_sort():
    f4 = open('G:\pycharm_makeshif\student_teacher_name','r',encoding='utf-8')
    student_subject_sort = []
    student_subject_english = []
    student_subject_chinese = []
    student_subject_math = []
    for i in f4:
        i = i[:-1]#分行
        subject,teacher,num,name,grade = i.split(",")
        g = subject,teacher,num,name,grade
        student_subject_sort.append(g)
    print(student_subject_sort)
    for i in range(len(student_subject_sort)):#分类
        if student_subject_sort[i][0] == "语文":
            student_subject_chinese.append(student_subject_sort[i])
        elif student_subject_sort[i][0] == "数学":
            student_subject_math.append(student_subject_sort[i])
        elif student_subject_sort[i][0] == "英语":
            student_subject_english.append(student_subject_sort[i])

    for sorting in [student_subject_english,student_subject_chinese,student_subject_math]:#排序
        print(sorting)
        # sorting.sort(key=lambda x: x[4],reverse=True)
    with open("student_sort_output",'w',encoding="utf-8") as f6:#存储
        for i in [student_subject_chinese, student_subject_math, student_subject_english]:
            f6.write(f"{','.join(map(str,i))}\n")

student_sort()

解释如下,将文档遍历后存储到列表中
再将列表分行分批排序后在累加输出
这种写法简直屎山
问题:在于列表和字典的特性,只能通过列表内嵌套字典写,判断也以来字典,更加繁杂,有没有简易的写法?

你给的例子少一列吧,好像每行应该有5个值?
subject,teacher,num,name,grade = i.split(",")
分组的话排序两次就可以了:

def student_sort():
    f4 = open('G:\pycharm_makeshif\student_teacher_name','r',encoding='utf-8')
    p = [i.split(",") for i in f4.readlines()]
    p.sort(key=lambda x:eval(x[3].strip()),reverse=True)
    # 如果是五列数据就是
    # p.sort(key=lambda x:eval(x[4].strip()),reverse=True)
    p = [",".join(i) for i in sorted(p,key=lambda x:x[0])]
    f6 = open("student_sort_output",'w',encoding='utf-8')
    f6.writelines(p)
    f4.close()
    f6.close()

student_sort()