sort
Python3
operator
attrgetter

attrgetterを使って読みやすいソート

タプルやリストでソートする際、ソートkeyを指定することがあると思いますが、keyを変数名で指定してより見やすくなる方法を知りました。ここにメモしておきます。

よくkeyの指定ではlambda式が用いられていますが、attrgetterというものを使えばより見やすく書けるみたいです。

from operator import attrgetter
class Student:
    def __init__(self, name, grade, age):
        self.name = name
        self.grade= grade
        self.age = age
    def __repr__(self):
        return repr((self.name,self.grade,self.age))

student_objects = [
    Student("john","A",12),
    Student("aeha","C",71),
    Student("argea","F",2),
]

print(sorted(student_objects, key= attrgetter("age")))

出力結果
[('argea', 'F', 2), ('john', 'A', 12), ('aeha', 'C', 71)]

print文の個所をlambda式で書くと
print(sorted(student_objects, key=lambda x: (x.age,)))

となるので、記号xやわかりにくいカンマが入らない分、少しばかり見やすくなったと思います。

参考にしたサイト

https://docs.python.org/2/howto/sorting.html
https://qiita.com/tag1216/items/485217b5c88dfcf00d34