Si vous voulez trier la liste par plusieurs clés, vous pouvez procéder comme suit :
my_list = [{'name':'Homer', 'age':39}, {'name':'Milhouse', 'age':10}, {'name':'Bart', 'age':10} ]
sortedlist = sorted(my_list , key=lambda elem: "%02d %s" % (elem['age'], elem['name']))
Il s'agit d'une méthode assez artisanale, puisqu'elle repose sur la conversion des valeurs en une seule représentation de chaîne de caractères pour la comparaison, mais elle fonctionne comme prévu pour les nombres, y compris les nombres négatifs (bien que vous deviez formater votre chaîne de caractères de manière appropriée, avec un espacement nul si vous utilisez des nombres).
6 votes
Lire la réponse et continuer à regarder opérateur.itemgetter . Puis-je trier sur plusieurs valeurs dans le même processus (par exemple nous avons
[{'name':'Bart', 'age':10, 'note':3},{'name':'Homer','age':10,'note':2},{'name':'Vasile','age':20,'note':3}]
Et à utiliser :from operator import itemgetter newlist = sorted(old_list, key=itemgetter(-'note','name')
EDIT : Testé, et ça marche mais je ne sais pas comment faire pour que la note soit DESC et le nom ASC.