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