【发布时间】:2021-04-11 08:45:35
【问题描述】:
我有一个如下的 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 项目。
【问题讨论】:
-
"请注意这是一个 Django 项目。"你认为这对这个特定问题的代码很重要吗?为什么?
-
student_answer_data_finish是CharField吗?您可以使用JsonField来防止序列化和反序列化。 -
是的,它是一个 CharField,感谢您的建议