我有三个对象,需要将它们填充到JSON文件格式中。这些对象来自一个API,需要进行展开以进行访问,如下所示:
my_dict = {}
for elem_a in list_a:
for elem_b in elem_a:
for elem_c in elem_b:
elem_c_info = {
"name" : elem_c.prop1,
"ID" : elem_c.prop2,
"GPA" : elem_c.prop3
}
my_dict.setdefault("university", {}) \
.setdefault(str(elem_a), {}) \
.setdefault(str(elem_b), {}) \
.setdefault("student", []).append(elem_c_info)
产生以下输出内容:
{
"university": {
"universityA": {
"class_1": {
"student": [
{
"name": "student_1",
"ID": "1234",
"GPA": "3.8"
},
我的期望输出:
{
"university": [{
"name": "universityA",
"class": [{
"name": "class_1",
"student": [{
"name": "student_1",
"ID": "1234",
"GPA": "3.8"
},
{
"name": "student_2",
"ID": "12345",
"GPA": "3.4"
}
]
},
{
"name": "class_2",
"student": [{
"name": "student_3",
"ID": "14",
"GPA": "3.0"
}]
}
]
}]
}
如您所见,我需要每个嵌套的字典在每个层级上都被放入一个列表中,并且我需要在每个层级(除了最内层)添加一个键/值对。我通过使用`.append`成功地处理了最内层的嵌套,但在更高层次上却没有运行。您有什么关于向数据结构添加这些元素的建议吗?接受解决这两个问题的方案。
以下是运行简单嵌套循环时输入数据结构的样子(感谢@PM_2Ring的建议):
在我上面的示例中:
list_a = [obj_1, obj_2, ..., obj_n]
for elem_a in list_a:
print('A', elem_a.name)
for elem_b in elem_a:
print(' B', elem_b.name)
for elem_c in elem_b:
print(' C', elem_c.prop1, elem_c.prop2, elem_c.prop3)
('A', universityA)
(' B', class_1)
(' C', student_1, 12345, 3.8)
(' B', class_2)
(' C', student_2, 145, 3.6)
('A', universityB)
(' B', class_1)
(' C', student_1, 12345, 3.8)
(' C', student_2, 1235, 3.6)
(' C', student_3, 12345, 3.4)
(' B', class_2)
(' C', student_1, 145, 3.6)
....
elem_a = [universityA, universityB, universityC] # Top tier
elem_b = [universityA.class_1, universityA.class_2, universityA.class_3] # Middle tier with OO property 'name'
elem_c = [universityA.class_1.student_name, universityA.class_1.student_id, universityA.class_1.student_gpa] # bottom tier relationship
list_a
中单个元素的预期输出,请更新多个元素的输出。 - Grigoriy Mikhalkin