4
>>> from operator import itemgetter
>>> ul = [(10,2),(9,4),(10,3),(10,4),(9,1),(9,3)]
>>> ol = sorted(ul, key=itemgetter(0,1), reverse=True)
>>> ol
[(10, 4), (10, 3), (10, 2), (9, 4), (9, 3), (9, 1)]

私が望むのは、2 番目のキーで reverse=False をソートすることです。言い換えれば、結果を次のようにしたい:

[(10, 2), (10, 3), (10, 4), (9, 1), (9, 3), (9, 4)]

どうすればいいですか?

4

1 に答える 1

7

数値を並べ替えるには、負の並べ替えキーを使用できます。

sorted(ul, key=lambda x: (-x[0], x[1]))

別の方法として、数値以外のデータがある場合は、2 パスの並べ替えを行うことができます (最初に最下位キーで並べ替えます)。

ol = sorted(ul, key=lambda x: x[1])
ol = sorted(ol, key=lambda x: x[0], reverse=True)
于 2013-02-08T22:02:12.837 に答える