0

2 つの列を使用してタプル リストを並べ替えるには、次のようにします。

t_l = sorted(t_l, key = lambda t_l: (t_l[-1], t_l[1]))

t_l[-1] がデフォルトの昇順で、t_l[1] が降順でソートされるようにソートするにはどうすればよいですか?

reverse = True を使用すると、両方の列が降順で並べ替えられます。

何か案は?

4

2 に答える 2

0

列のいずれかが数値である場合、または数値としても表現できる場合は、列の 1 つの並べ替えを逆にすることができます。次に、数値列を単に否定して、その列の並べ替えを逆にすることができます。

t_l[-1]列が数値の場合は、次を使用します。

sorted(t_l, key=lambda i: (-i[-1], i[1]))

(入力リストとlambda引数に異なる名前を使用すると、混乱が軽減されます)

その列が数値ではなく、もう一方の列が数値である場合でも、同じトリックを使用できますが、並べ替え全体を逆にする必要があります。

sorted(t_l, key=lambda i: (i[-1], -i[1]), reverse=True)

ord()関数を使用して、単一文字列を数値にすることができます。を使用ord()すると同じ並べ替え順序になりますが、数値であるため、逆にすることができます。

sorted(t_l, key=lambda i: (-ord(i[-1]), i[1]))
于 2013-05-10T17:01:51.603 に答える
0

例で簡単な解決策を試しました

t_l = [[3,4,5,6,2,4,6],[6,7,3,4,5]]

t_l = [sorted(t_l[0], reverse = False),sorted(t_l[1], reverse = True)] 

与える

>>> t_l
[[2, 3, 4, 4, 5, 6, 6], [7, 6, 5, 4, 3]]

それはあなたが探しているものですか?

于 2013-05-10T17:05:52.857 に答える