1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| example_liste = [{"A":"M", "B":15.2, "C":"interne"},
{"A":"F", "B":"", "C":"externe"},
{"A":"F", "B":5.3, "C":"externe"},
{"A":"", "B":4, "C":"externe"}]
keys_to_sort = {"A":{"type":"str","sort":"des"}, "B":{"type":"float","sort":"asc"}}
#boucle permettant de construire la fonction de tri
final_sort_str = ""
for key, type in keys.items():
if keys_to_sort["sort"] == "des" :
if keys_to_sort["type"] == "str" : final_sort_str += f"float(ord(example_liste[{key}]))," #ord() pour convertir les lettres en valeurs numériques et float() pour convertir en décimal pour la fonction sorted()
elif keys_to_sort["type"] == "float" : final_sort_str += f"float(example_liste[{key}]),"
elif keys_to_sort["sort"] == "asc" :
if keys_to_sort["type"] == "str" : final_sort_str += f"-float(ord(example_liste[{key}]))," # '-' pour inverser le tri
elif keys_to_sort["type"] == "float" : final_sort_str += f"-float(example_liste[{key}]),"
final_sort_str = final_sort_str [:-1] #pour retirer la dernière virgule
#fonction de tri
sorted_list = sorted(example_list, key=lambda x: (eval(final_sort_str )), reverse=True ) |
Partager