Nicht nur auf Python beschränkt, beim Schreiben eines Programms gibt es viele Möglichkeiten, Listen (Arrays) und Wörterbücher zu sortieren. Viele dieser Methoden werden in Blog-Artikeln usw. vorgestellt.
Es gibt jedoch seltener als Listen und Wörterbücher, in denen Sie eine Liste von Instanzen nach Instanzvariablen sortieren möchten. Wenn Sie beispielsweise die folgende Klasse mit dem Namen "Student" haben, können Sie die Liste der Instanzen mit dem Namen "Students" nach "Score" sortieren.
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]
Verwenden Sie in diesem Fall die Funktion operator.attrgetter in wenigen Zeilen (fast eine Zeile) wie folgt. Kann schreiben.
from operator import attrgetter
students.sort(key=attrgetter('score'))
for s in students:
print(s.name, s.score)
Taro 70
Jiro 80
Hanako 90
Wenn Sie in absteigender Reihenfolge sortieren möchten, setzen Sie einfach das Argument 'sort method
reverse wie folgt auf
True`:
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