2 votes

Comment attacher l'index correspondant à une liste ?

J'ai filtré un groupe d'étudiants en trois catégories en utilisant une boucle for et en décomposant un tuple. Comment puis-je attacher les numéros d'étudiant correspondants à chaque score ? Merci.

#create index for 100 students, starting with 1
student_index = list(range(1,101))

#join index with results sheet
student_score_index = list(zip(student_index, results_sheet2))

group_a = []
group_b = []
group_c = []

# Iterate over pairs

for index, pair in enumerate(student_score_index):
    # Unpack pair: index, student_score
    index, score = pair
    # assign student scores into 3 buckets: group_a,group_b,group_c
    if score >= 60:
        group_a.append(score)
    elif score >= 50 and score <=59:
            group_b.append(score)
    else:
        group_c.append(score)

print(group_a)
[61, 67, 63, 62, 62, 62]

Le résultat souhaité devrait être quelque chose comme ceci pour les trois groupes :

#print corresponding student index number, score    

group_a = [(29,61),(51,67),(63,63),(65,62),(98,62),(99,62)]

0voto

PCM Points 648

Je ne sais pas ce qu'est le score ou le groupe_a etc... Donc, ici j'ai un exemple -

group_a = [61, 67, 63, 62, 62, 62]
score = [29,51,63,65,98,99,62]

new_lst = []
for i,j in zip(group_a,score):
    new_lst.append((j,i))

print(new_lst)

Résultat :

[(29, 61), (51, 67), (63, 63), (65, 62), (98, 62), (99, 62)]

Ainsi, vous pouvez implémenter ceci dans votre code

0voto

John Points 309

Si vous êtes à l'aise pour essayer une nouvelle bibliothèque, pandas Je le recommande vivement. Ils ont des outils intégrés pour exactement ce genre de travail !

import pandas as pd

# create index for 100 students, starting with 1
student_index = list(range(1,101))

# join index with results sheet
score_index = pd.DataFrame.from_dict({
  "studentID": student_index,
  "scores": results_sheet2,
})

group_a = score_index.loc[score_index["score"] >= 60]
group_b = score_index.loc[score_index["score"] <= 59]
# etc ...

Vous pouvez en fait simplifier encore plus les choses en utilisant pandas et faites ce qui suit :

import pandas as pd

# by default, pandas will generate an index to track each row, 
# for you. it's accessible by the `.index` property of `score_index`.
score_index = pd.DataFrame.from_dict({
  "scores": results_sheet2,
})

group_a = score_index.loc[score_index["score"] >= 60]
group_b = score_index.loc[score_index["score"] <= 59]
# etc ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X