簡體   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