猿问

如何对字符串列表中的元素进行分组并将它们转换为字典?

所以我的任务是将字符串列表转换为元组字典。字典的键和值由空字符串分隔。对于字典,键应该是学生的名字,两个值应该是他们的分数和等级。成绩应该是字符串形式。列表如下:

['John','85 A','90 A+','','David','71 B-','80 A-','','Liz','95 A+','66 C+']

这应该给我一个结果:

{'John':([85,90],['A','A+']),'David':([71,80],['B-','A-']),'Liz':([95,66],['A+','C+']}

我正在自学元组和字典,所以我不知道如何将字符串分成与键对应的两部分。也不知道如何通过 '' 空字符串将它们分组......任何帮助将不胜感激:)


米琪卡哇伊
浏览 75回答 1
1回答

慕工程0101907

这是一个新的建议解决方案。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+'])}
随时随地看视频慕课网APP

相关分类

Python
我要回答