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+'])}
添加回答
舉報