1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #
# ici j'ai choisi une liste de listes, ca ou autre chose...
#
resultats = [
['Robert', 0, 1], ['Jeanne', 4, 2], ['Eric', 1, 3],
['Isabelle', 3, 4], ['Jean', 3, 5], ['Mathilde', 2, 6],
['Maeva', 0, 6], ['Christian', 2, 6], ['François', 1, 7],
['Hélène', 0, 8], ['Paul', 0, 10]
]
#
# on met ces données en forme, c'est pas hyper nécéssaire mais ça permet de s'y retrouver un peu
# à la fin on a un truc du genre :
# db = [ {'nom': 'Robert', 'oldclass': 1, 'score': 0},
# {'nom': 'Jeanne', 'oldclass': 2, 'score': 4},
# {'nom': 'Eric', 'oldclass': 3, 'score': 1}, etc. ]
#
db = [dict(zip(['nom', 'score', 'oldclass'], i)) for i in resultats]
#
# on récupère la liste des scores, triées du plus élevé au plus bas :
#
scores_tries = sorted(set([i['score'] for i in db]), reverse = True)
#
# et enfin pour chaque scores identiques, on trie les enregistrements sur la base
# de leur ancien classement, on ajoute le tout au classement définitif
#
classement_final = []
for score in scores_tries:
classement_final.extend(sorted([i for i in db if i['score'] == score], key=lambda x: x['oldclass'])) |