arrays - 解析 JSON 来做数学题?

标签 arrays json python-3.x string math

我是编程新手(尤其是 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

这会给你看起来像这样的东西:

enter image description here

现在您可以随心所欲地输出

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/

相关文章:

PHP: Json解码错误

python - 添加到 pandas python df 中的列

python - 在递归中使用 scrapy 回调时 xlsxwriter 无法创建文件

python-3.x - Gensim build_vocab 耗时过长

c++ - 空数组元素 C++

arrays - Kotlin 中简洁的 2D 原始数组初始化

javascript - 用一个json数组的变量指向右键

JavaScript:获取未定义的值

arrays - 查找总和小于给定值的最大元素(连续)?

python - 如何从大文件中读取行分隔的 JSON(逐行)