我是编程新手(尤其是 JSON 格式),所以请原谅我没有使用正确的术语:) 使用 Python 3.7 请求模块,我收到 JSON 响应。为了简单起见,我举了一个例子:
{
"Bob":
{
"Age": "15",
"LastExamGrade": "45",
},
"Jack":
{
"Age": "16",
"LastExamGrade": "58",
}
}
我想做的是解析 JSON 响应,从每个响应/结构中提取两个项目,并将其保存到这样的列表中(我认为这称为元组的元组?):
[("Bob","45"),("Jack","58")]
然后,在收到此操作后,我将收到另一个类似的回复,例如以下内容(唯一改变的是考试成绩):
{
"Bob":
{
"Age": "15",
"LastExamGrade": "54",
},
"Jack":
{
"Age": "16",
"LastExamGrade": "70",
}
}
我还想将名称和成绩保存到元组的元组(列表)中。
最后,我想用每个人上次考试成绩减去第一次考试成绩,并将其保存到最终列表中,其中包括姓名、期末考试成绩和成绩进步情况,如下所示:
[("Bob","54","9"),("Jack","67","12")]
使用 Python 3 执行此操作的最简单方法是什么?至于我自己的研究,我已经搜索了整个 StackOverflow,但找不到如何解析像我这样的 JSON(例如,在我的中,名称位于大括号之外),并且在进行数学运算时遇到困难对于 JSON 项目。
最佳答案
我建议使用专用包进行计算,例如 pandas:
first_exam_grades = pd.DataFrame.from_dict(first_exam_results, orient='index').astype(int)
second_exam_grades = pd.DataFrame.from_dict(second_exam_results, orient='index').astype(int)
improvements = second_exam_grades.LastExamGrade.to_frame()
improvements['Improvement'] = second_exam_grades.LastExamGrade - first_exam_grades.LastExamGrade
这会给你看起来像这样的东西:
现在您可以随心所欲地输出
list(zip(*([improvements.index.tolist()] + [improvements[c].values.tolist() for c in improvements])))
这将为您提供您想要的[('Bob', 54, 9), ('Jack', 70, 12)]
。
关于arrays - 解析 JSON 来做数学题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57129048/