繁体   English   中英

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

[英]How to group elements in a list of strings and convert them into a dictionary?

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

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

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

这是一个新的建议解决方案。

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 列表 append 到我们的 newList。 最后的 newList 看起来像这样。

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

现在我们可以轻松地遍历每个学生。 我们知道第一个值将是键,任何后续值都将是数字和字符等级。 由于第一个值是键,我们可以创建一个包含 2 个空列表的元组,用于数字和字符等级。 由于我们正在遍历一个特定的学生,我们知道第一个元素是字典的键,所以我们可以 append 我们已经解析到那个。

我们的结果是

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM