2017年2月16日木曜日

Motionbuilder:Python:LongNameでsort

オブジェクトをリストで取得した後で、NameやLongnameなどのパラメーターを使ってソートをする方法。

myList= sorted(myList, key=lambda x: x.LongName)

myList
オブジェクトなどを複数格納しているリストの例
テキトウに作ったものを用意

sorted(
単に
sorted( myList )
としてもソートはできるが中身がオブジェクトのリストの場合何を基準にソートされるかはわからない

key=
例えば
key=int
とするとintで比較してくれるようになる

key=lambda x: x.LongName
lambdaは無名関数というものらしい
今回のキモ(読み方はわからないが俺は「ランバダ」と呼んでいる)
上記は以下のように分解できるらしい
def key ( x ):
     return x.LongName
これを使うことでLongNameでソートすることができるようになる

スクリプトを効率良く書くにはlambda関数便利そうだけど
身につくまでは時間がかかりそうだ・・・