複数の属性でリストを並べ替えるには?質問する

複数の属性でリストを並べ替えるには?質問する

リストのリストがあります:

[[12, 'tall', 'blue', 1],
[2, 'short', 'red', 9],
[4, 'tall', 'blue', 13]]

1 つの要素、たとえば高さ/低さの要素で並べ替えたい場合は、 で実行できますs = sorted(s, key = itemgetter(1))

高さ/低さと色の両方で並べ替えたい場合は、各要素ごとに 1 回ずつ、並べ替えを 2 回実行できますが、もっと速い方法はありますか?

ベストアンサー1

キーはタプルを返す関数にすることができます。

s = sorted(s, key = lambda x: (x[1], x[2]))

または、次のようにして同じことを実現できますitemgetter(より高速で、Python 関数呼び出しを回避できます)。

import operator
s = sorted(s, key = operator.itemgetter(1, 2))

sortここで、を使用してから再割り当てする代わりに、を使用できることに注意してくださいsorted

s.sort(key = operator.itemgetter(1, 2))

おすすめ記事