我有一个JSON,如下所示:
[
[
{
"subject": "Subject_1",
"qapali_correct_count": "12"
},
{
"subject": "Subject_2",
"qapali_correct_count": "9"
}
],
[
{
"subject": "Subject_1",
"qapali_correct_count": "14"
},
{
"subject": "Subject_2",
"qapali_correct_count": "15"
}
],
[
{
"subject": "Subject_1",
"qapali_correct_count": "11"
},
{
"subject": "Subject_2",
"qapali_correct_count": "12"
}
]
]
我必须输出每个主题的平均值:例如:subject_1=12.33,subject_2=12 我试过这段代码,它是有效的,但我只是想知道是否有任何选项来加速这段代码,是否有其他有效的方法来实现它
results = Result.objects.filter(exam=obj_exam, grade=obj_grade)
student_count = results.count()
final_data = {}
for result in results:
st_naswer_js = json.loads(result.student_answer_data_finish)
for rslt in st_naswer_js:
previus_data = final_data.get(rslt['subject'],0)
previus_data = previus_data+int(rslt['qapali_correct_count'])
final_data.update({rslt['subject']:previus_data})
for dudu, data in final_data.items():
tmp_data = data/student_count
final_data[dudu]=tmp_data
print(final_data)
请注意,这是一个Django项目
你问题中的代码有几个不相关的位。我将坚持这一部分:
我假设上面的结果列表位于一个名为
results
的列表中。如果每个学生都加载了json,那么在现有代码中可能已经有了处理方法。下面主要关注的是subject_score
将每个科目的分数存储在字典中,字典的值是分数列表。我在这里使用一个^{} ,以
list
作为默认工厂,因此当访问不存在的字典值时,它会被初始化为一个空列表(而不是抛出一个在标准字典中会发生的键错误)averages
是:也可以根据需要打印或保存到文件、数据库等
相关问题 更多 >
编程相关推荐