リストのリストがあります:
[[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))