| 12
 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