为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

米琪卡哇伊 2022-10-05 17:52:18
所以我的任务是将字符串列表转换为元组字典。字典的键和值由空字符串分隔。对于字典,键应该是学生的名字,两个值应该是他们的分数和等级。成绩应该是字符串形式。列表如下:['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+']}我正在自学元组和字典,所以我不知道如何将字符串分成与键对应的两部分。也不知道如何通过 '' 空字符串将它们分组......任何帮助将不胜感激:)
查看完整描述

1 回答

?
慕工程0101907

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+'])}



查看完整回答
反对 回复 2022-10-05
  • 1 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信