Non limité à Python, lors de l'écriture d'un programme, il existe de nombreuses possibilités de trier des listes (tableaux) et des dictionnaires. Et bon nombre de ces méthodes sont présentées dans les articles de blog, etc.
Cependant, moins souvent que les listes et les dictionnaires, vous souhaitez parfois trier une liste d'instances par variables d'instance. Par exemple, si vous avez une classe appelée «Student» comme celle ci-dessous, vous pouvez trier la liste des instances nommées «étudiants» par «score».
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
a = Student('Taro', 70)
b = Student('Hanako', 90)
c = Student('Jiro', 80)
students = [a, b, c]
Dans un tel cas, si vous utilisez la fonction operator.attrgetter, vous pouvez utiliser quelques lignes (presque une ligne) comme suit. Peut écrire.
from operator import attrgetter
students.sort(key=attrgetter('score'))
for s in students:
print(s.name, s.score)
Taro 70
Jiro 80
Hanako 90
Si vous souhaitez trier par ordre décroissant, définissez simplement l'argument de la méthode sort`` reverse
sur True
comme suit:
from operator import attrgetter
students.sort(key=attrgetter('score'), reverse=True)
for s in students:
print(s.name, s.score)
Hanako 90
Jiro 80
Taro 70
Recommended Posts