2017-04-13 65 views
-4

有,在Python 2.x的0上升的列表Python的排序列表的最後一個地方

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 - 自定義列表) – languitar

+0

@languitar沒有幫助,我需要一個通用的解決方案,因爲該列表可能有3個完全歸零元素,可能有1個,可能沒有。 –

+0

什麼是問題這些情況?只需使用一個lambda表達式來選擇每個子列表的最後一個條目作爲排序鍵...... – 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])) 
相關問題