我想将某些东西分组以成为字典和列表。还根据标题对它们进行分组

I want to group something to become a dictionary and list. Also group them based on the heading

我想将以下数据分组到字典中,并在列表中添加名称部分和等级

我的输入数据:

mystring = """STUDENT;SECTION;GRADE
    Abordo;BSIT4A;2.25
    Agustin;BSIT4A;1.75
    Asiatico;BSIT4A;3.00
    Asilo;BSIT4A;2.75
    Bernabe;BSIT4A;2.25
    Borja;BSIT4A;2.00
    Botabara;BSIT4A;3.00
    Cagoco;BSIT4A;3.00
    Cariño;BSIT4A;3.00
    Cruz;BSIT4A;3.00
    Dapatnapo;BSIT4A;3.00
    Darupan;BSIT4A;2.25
    Delos Reyes;BSIT4A;3.00
    Ono;BSIT4A;3.00
    Torres;BSIT4A;2.50
    Ugale;BSIT4A;2.25
    Elpedes;BSIT4B;3.00
    Endozo;BSIT4B;2.50
    Estrada;BSIT4B;3.00
    Evangelista;BSIT4B;2.75
    Fernandez;BSIT4B;3.00
    Flores;BSIT4B;3.00
    Gayeta;BSIT4B;2.25
    Gernale;BSIT4B;2.25
    Guarino;BSIT4B;2.50
    Lecaros;BSIT4B;3.00
    Legarda;BSIT4B;2.50
    Longcop;BSIT4B;2.75
    Mabansag;BSIT4B;2.75
    Malaluan;BSIT4B;2.50
    Manaba;BSIT4B;2.25
    Manarin;BSIT4B;3.00
    Mengol;BSIT4B;3.00
    Opriasa;BSIT4B;2.50
    Pangan;BSIT4B;1.75
    Cortez;BSIT4C;3.00
    Pantilag;BSIT4C;2.25
    Penuliar;BSIT4C;3.00
    Relojo;BSIT4C;3.00
    Reyes;BSIT4C;2.75
    Salazar;BSIT4C;3.00
    Santiago;BSIT4C;2.25
    Seberre;BSIT4C;3.00
    Suayan;BSIT4C;3.00
    Sulit;BSIT4C;3.00
    Tejada;BSIT4C;2.50
    Tura;BSIT4C;2.25
    Tuvieron;BSIT4C;1.75
    Vicente;BSIT4C;2.25
    Yacub;BSIT4C;2.75"""

到目前为止我的代码:

a = mystring.split("\n")
for i, j in enumerate(a):
     a[i] = j.replace(";",":")

heading = mystring[0]

我想根据以下组将它们分开:

{
    'STUDENT': ['Abordo', 'Agustin', ...],
    'SECTION': ['BSIT4A', 'BSIT4A', ...],
    'GRADE': [2.25, 1.75, ...]
}

我是 python 的新人,如果你能告诉我,我真的很感激。 我已经这样做了,所以我可以将字符串更改为半列分隔符

鉴于您的数据的简化版本:

mystring = """STUDENT;SECTION;GRADE
    Abordo;BSIT4A;2.25
    Agustin;BSIT4A;1.75
    Asiatico;BSIT4A;3.00
    Asilo;BSIT4A;2.75
    Bernabe;BSIT4A;2.25
    Borja;BSIT4A;2.00
    Botabara;BSIT4A;3.00"""

我可能会做的第一件事是将其重塑为“列表列表”或字典列表。让我们做一个列表列表。

rows = [
    [cell.strip() for cell in row.split(";")]
    for row in mystring.split("\n")
]

此时我们可以用 print():

查看我们拥有的内容
[
    ['STUDENT', 'SECTION', 'GRADE'],
    ['Abordo', 'BSIT4A', '2.25'],
    ['Agustin', 'BSIT4A', '1.75'],
    ['Asiatico', 'BSIT4A', '3.00'],
    ['Asilo', 'BSIT4A', '2.75'],
    ['Bernabe', 'BSIT4A', '2.25'],
    ['Borja', 'BSIT4A', '2.00'],
    ['Botabara', 'BSIT4A', '3.00']
]

现在我们可以使用第一行中的数据作为字典的键并将相应的值附加到列表中来重塑它。

headers = rows[0]
results = collections.defaultdict(list)
for row_values in rows[1:]:
    for column_index, column_name in enumerate(headers):
        results[column_name].append(row_values[column_index])

我们可以再次打印我们必须看到的内容:

{
    'STUDENT': ['Abordo', 'Agustin', 'Asiatico', 'Asilo', 'Bernabe', 'Borja', 'Botabara'],
    'SECTION': ['BSIT4A', 'BSIT4A', 'BSIT4A', 'BSIT4A', 'BSIT4A', 'BSIT4A', 'BSIT4A'],
    'GRADE': ['2.25', '1.75', '3.00', '2.75', '2.25', '2.00', '3.00']
}

请注意,如果您想探索 pandas 模块,它会为您完成大部分工作。