Je voudrais utiliser le somelist.méthode sort() pour faire de cette si possible.
J'ai une liste contenant les objets, tous les objets ont une variable de membre resultType qui est un entier. Je voudrais trier la liste à l'aide de ce numéro.
Comment puis-je faire cela?
Merci!
Voici une autre façon de faire la même chose que vous verrez souvent utilisé:
Vous pouvez également regarder
triés
si vous ne l'avez pas déjà vu. Il ne doit pas modifier la liste d'origine -, il retourne une nouvelle liste triée.Bien sûr, il n'a pas à être un lambda. Toute fonction passé, tels que le dessous de l'un, les travaux
Source : Python Tri
Donc, dans votre cas ...
Ladite lambda est certainement le plus compact de la façon de le faire, mais il y a aussi l'aide de de l'opérateur.itemgetter.
Donc, si vous voulez utiliser itemgetter('resultType'). (En supposant que getitem est définie.)
Est mieux que:
Dans le premier cas, on passe à une fonction de comparaison qui est utilisé pour les paires de comparer les éléments de la liste. Dans le second cas, nous attribuons une nouvelle liste de paires du résultat de la fonction de la touche, et la valeur d'origine. Ensuite, nous trier la liste, puis d'enlever les valeurs de clé de l'paires. C'est vraiment utile si votre fonction de comparaison est cher, mais il est juste un gaspillage de mémoire si la comparaison est vraiment pas cher.
Qui est, l'expansion de la version clé ressemble à quelque chose comme ceci:
Pour une simple touche de fonction, c'est clairement trop de frais généraux, de sorte qu'au lieu que je vous recommande d'utiliser le plus léger de la fonction de tri.
Noter que la cmp paramètre de la fonction doit retourner -1, 0, 1, dans la moins de, de l'égalité et plus de cas. Vous pouvez écrire vous-même, mais vous pouvez également utiliser le construit en cmp fonction qui est plus clair.