我有一个这样的 json 响应。
{
"students": [
{
"student_reference_id": "1234",
"name": "Rajesh Pawar",
"birth_year": "1995",
"gender": "Male",
"marks": [
{
"science": 1234,
"physics": "2345",
}
]
}
{
"student_reference_id": "5678",
"name": "nikita Pawar",
"birth_year": "1996",
"gender": "female",
"marks": [
]
}
]
}
我想要一个像 dict 一样的列表
"student_reference_id": "5678",
"name": "nikita Pawar",
"birth_year": "1996",
"gender": "female",
"science": 1234,
"physics": "2345",
我可以这样做
response = response.json()
new_list = []
response = response['students']
for student in response
for mark in student
temp = {
"student_reference_id": student['student_reference_id'],
"name": student['name'],
"birth_year": student['birth_year'],
"gender": student['gender'],
"science" : mark['science'],
"physics" : mark['physics']
}
new_list.append(temp)
问题是,当标记 dict 响应为空(假设学生没有参加考试),上述解决方案会跳过学生并且学生数据不会出现在新列表中。 >
实现它的更好方法是什么?
答案 0 :(得分:0)
您在遍历 temp
时创建了 mark in student
对象,这就是为什么在没有任何标记时不会创建对象的原因。试试这个
for student in response:
temp = {
"student_reference_id": student['student_reference_id'],
"name": student['name'],
"birth_year": student['birth_year'],
"gender": student['gender']
}
if(len(student["marks"]) > 0):
for mark in student["marks"][0]:
temp[mark] = student["marks"][0][mark]
new_list.append(temp)