Python 如何将字符串列表中的元素分组并将其转换为字典?

Python 如何将字符串列表中的元素分组并将其转换为字典?,python,string,dictionary,tuples,Python,String,Dictionary,Tuples,因此,我的任务是将字符串列表转换为元组字典。字典的键和值由空字符串分隔。对于字典,键应该是学生的名字,两个值应该是他们的分数和等级。等级应为字符串形式。列表如下: ['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+',

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

['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列表附加到新列表中。我们最后的新列表将是这样的

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

一些可能对你有帮助的事情。首先,在列表中,每组数据是列表中的3个元素,后面是一个空格(除了末尾)。其次,对于每一组数据,第一个元素是关键。第二个和第三个元素同时包含数字和字符级别。这可以使用str.split进行拆分,其中结果的第一个元素是数字等级,第二个元素是字符等级。要向列表中添加元素,可以使用list.appendValue。实际上,进一步查看后,列表中的最后两个元素似乎是分开的。这是正确的格式吗?['66','C+']还是['66 C+']谢谢你的帮助,我很困惑,因为我不知道如何分割每组数据。比如我怎么能用空字符串来分割它们?我的错。已经修复了。它不一定显示索引0,4,8将是名称或键。每套的长度可能不同。。。数据集实际上是由空字符串分隔的,因此键是空字符串的第一个元素,而不是4的倍数:啊,我明白了。我是根据输入去做的。没问题,我会提供一个更强大的解决方案和解释。谢谢你的帮助!我认为newList是一组数据的列表,然后我们将newList中的子列表分组,方法是将第一个元素设置为键,将剩余的术语按“”拆分,然后将它们分别添加到元组中的两个列表中。这就是全部逻辑吗?