我有一本字典(名为dict1
),其结构如下:
dict1 =
{'Classroom':
[{'Subject': "Calculus", 'Students':
[
{'Name': "Joe", 'Age': 12, 'Weight': 126, 'Gender': "Male"},
{'Name': "Doug", 'Age': 13, 'Weight': 95, 'Gender': "Male"},
{'Name': ..., 'Age': ..., 'Weight': ..., 'Gender': ...}
...
]
}]
}
此词典中的列表(包含姓名,年龄,体重和性别)非常长,我想解析姓名,年龄和< strong>性别,然后将其附加到另一个列表中,如下所示:
mylist = [("Joe", 12, "Male"), ("Doug", 13, "Male"), ... ]
我尝试了在线搜索,并修改了如下代码:
mylist = []
dict2 = dict1['Classroom'][0]['Students'][0]['Name']
mylist.append(dict2)
但是发生的是它仅附加了名字(Joe)。此外,我要注意如何同时解析三个项目(名称,年龄和性别)。有没有人不必使用库就能做到这一点?我知道这可能是一个简单的问题,但是我是Python的新手,感谢您的帮助!
答案 0 :(得分:1)
您的dict1
包含一个密钥'Classroom'
,其值为具有一个条目的list
。
该条目也是一个dict
,其中包含两个键。您需要'Students'
键,因为它包含所有学生的列表。这是一个清单。遍历该列表并将字段分组为元组。
从技术上讲,它是嵌套在字典['Students']
中的列表['Classroom'][0]
中的字典['Classroom']
中的列表dict
。
代码将是
mylist = []
studentlist = dict1['Classroom'][0]['Students']
for s in studentlist:
m = (s['Name'], s['Age'], s['Gender'])
mylist.append(m)
对于测试用例
classroom = {'Classroom':
[{'Subject': "Calculus", 'Students':
[
{'Name': "Joe", 'Age': 12, 'Weight': 126, 'Gender': "Male"},
{'Name': "Doug", 'Age': 13, 'Weight': 95, 'Gender': "Male"},
{'Name': "Omg", 'Age': 50, 'Weight': 99, 'Gender': "Female"}
]
}]
}
您最终会得到
[('Joe', 12, 'Male'), ('Doug', 13, 'Male'), ('Omg', 50, 'Female')]
答案 1 :(得分:1)
student_list = []
classroom_list = dict1['Classroom']
# this is the first iteration list
for classroom in classroom_list:
student_list = classroom['Students']
# this is the second iteration list
for student in student_list:
student_list.append(student['Name'], student['Age'], student['Gender'])
#student_list = [("Joe", 12, "Male"), ("Doug", 13, "Male"), ... ]