如何在忽略某些数据的同时获取JSON数据数组?

2024-04-26 21:07:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个json数据,其中包含SAT分数及其对应学校的数组

输入:[{"num_of_sat_test_takers":"s","sat_critical_reading_avg_score":"s","sat_math_avg_score":"s","sat_writing_avg_score":"s","school_name":"HUDSON HIGH SCHOOL OF LEARNING TECHNOLOGIES"}, {"num_of_sat_test_takers":"91","sat_critical_reading_avg_score":"383","sat_math_avg_score":"423","sat_writing_avg_score":"366","school_name":"UNIVERSITY NEIGHBORHOOD HIGH SCHOOL"}, {num_of_sat_test_takers":"70","sat_critical_reading_avg_score":"377","sat_math_avg_score":"402","sat_writing_avg_score":"370","school_name":"EAST SIDE COMMUNITY SCHOOL"}]

预期输出:"[[383, 423, 366, "UNIVERSITY NEIGHBORHOOD HIGH SCHOOL"], [377, 402, 370, "EAST SIDE COMMUNITY SCHOOL"]]"

我只想取一个由SAT阅读分数、SAT数学分数、SAT写作分数和相应的学校名称组成的数组,同时省略不包含任何有效SAT分数的学校,例如“哈德逊学习技术高中”。这是我的尝试。现在,我如何省略那些没有任何有效SAT分数的学校

def keyData(data):
    json_str = [[float(e["sat_critical_reading_avg_score"]), 
    float(e["sat_math_avg_score"]), float(e["sat_writing_avg_score"]), 
    e["school_name"]] for e in data]
    return json.dumps(json_str)

Tags: namejsonmathsatnum分数学校avg
1条回答
网友
1楼 · 发布于 2024-04-26 21:07:20

这应该做到:

def keyData(data):
  result = []
  for ele in data:
    try:
      result.append([
        int(ele['sat_critical_reading_avg_score']),
        int(ele['sat_math_avg_score']),
        int(ele['sat_writing_avg_score']),
        ele['school_name']
      ])
    except:
      pass
  return result

如果element没有定义任何小数点,或者该值不是整数,则将抛出错误,不会发生附加,执行将跳转到except块,在该块中不会发生任何事情,我们将对数据中的所有元素重复此操作

相关问题 更多 >