1 回答
TA贡献1887条经验 获得超5个赞
这是一个新的建议解决方案。
list = ['John','85 A','90 A+','','David','71 B-','80 A-','','Liz','95 A+','66 C+']
newList = []
tmp = []
for element in list:
if (element != ''):
tmp.append(element)
else:
newList.append(tmp)
tmp = []
newList.append(tmp)
students = {}
for student in newList:
curStudent = student[0]
students[curStudent] = ([], [])
for i in range(1, len(student)):
splitStr = student[i].split(" ")
students[curStudent][0].append(int(splitStr[0]))
students[curStudent][1].append(splitStr[1])
print(students)
首先,我们将列表除以空格。我们知道列表不会以空格结尾,因此在遍历列表之后,我们将 tmp 列表附加到我们的 newList 中。最后的 newList 看起来像这样。
[['John', '85 A', '90 A+'], ['David', '71 B-', '80 A-'], ['Liz', '95 A+', '66 C+']]
现在我们可以轻松地遍历每个学生。我们知道第一个值将是键,任何后续值都将是数字和字符等级。由于第一个值是键,我们可以创建一个包含 2 个空列表的元组,用于数字和字符等级。由于我们正在遍历一个特定的学生,我们知道第一个元素是字典的键,因此我们可以将我们解析的内容附加到该字典中。
我们的结果是
{'John': ([85, 90], ['A', 'A+']), 'David': ([71, 80], ['B-', 'A-']), 'Liz': ([95, 66], ['A+', 'C+'])}
添加回答
举报