[英]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.