ビジネスパーソン・ガジェット置場 empty lot for business

営業や仕事、それに伴う生活を便利に楽にするツール、ガジェットを作ります。既にあるツールも自分用にカスタマイズ。

python: インスタンスのリストをインスタンスが持つ属性で並べ替え(sort, lambda)

備忘録です。今回はインスタンス変数をまとめたリストを並べ替えます。

並べ替えsort()

 

下記のようなリストmemberを年齢順に並べ替えたいっていう時があったりします。

member = [ken, nayon, wonyon]

 

実は、リストの中にいるken, nayon, wonyonはそれぞれ名前と年齢の情報を持ったインスタンス変数です。

 

作り方はまず、名前と年齢情報を保持するPersonクラスを作ります。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

 

 

そして、三人のインスタンスを名前、年齢を持たせて作ります。

ken = Person('ken', 20)
nayon = Person('nayon', 23)
wonyon = Person('wonyon', 18)

 

そして冒頭のリスト化。

 

彼ら三人はインスタンスなので普通にsortすると

member.sort()

怒られます。

 

そこで、lambdaを使って並べ替えのkeyを年齢にします。

member.sort(key=lambda x: x.age)

 

そうすると、for文で順番に取り出してみると

for i, m in enumerate(member):
    print(f'若さ順: {i}番目 {m.name}')
>>>>若さ順: 0番目 wonyon
>>>>若さ順: 1番目 ken
>>>>若さ順: 2番目 nayon


並べ変わっているのが確認できました。