2017-04-13 5 views
-4

、で0と昇順リストのリストをソートするは、Pythonは、Python 2.xで持つ最後の場所

x = [ 
    [0,0,0], 
    [1,2,3], 
    [150,400,200], 
    [0,0,0], 
    [225,100,150] 
] 

私はそれはとてもxは

[ 
    [1,2,3], 
    [225,100,150], 
    [150,400,200], 
    [0,0,0], 
    [0,0,0], 
] 

x[i][2]順となっ作るために何ができますか昇順、最後に0で?

+0

[Pythonの:どのようにカスタムリストを注文するには?]の可能な重複(http://stackoverflow.com/questions/3624323/python-how-to -custom-order-a-list) – languitar

+0

@languitarは助けになりませんでした。リストのリストに3つの要素が完全にゼロになっている可能性があり、1があるかもしれず、何も持たない可能性があるので、一般的な解決策が必要です。 –

+0

そして、これらの場合?各サブリストの最後の項目をソートキーとして選択するラムダ式を使用してください。 – languitar

答えて

2

これは、次のようになります。

sorted(t, key=lambda x: x[2] if x[2] > 0 else float('inf')) 
+0

これは、float( 'inf')を見つけましたが、このソリューションに到達できませんでした。ありがとう! –

1
x.sort(key=lambda y: (y[2] == 0, y[2])) 
関連する問題