1

我有一個二維數組,有6列,在Python中有數字數據,我希望能夠按多列進行排序。Python 3 - 二維數組按多列排序

我已經試過這樣:

def sort_data(): 
    dataset.sort(key=lambda x: (x[2], x[5], x[1])) 

,但我的結果顯示如下:

0 0000000000 0.46998 16 0.07  1.12 
0 0000000000 0.94859 35 0.44 15.40 
0 0000000000 0.25083 83 1.87 155.21 
0 0000000000 0.38635 34 5.84 198.56 
0 0000000000 0.07564 34 6.13 208.42 
0 0000000000 0.76168 13 1.66 21.58 
0 0000000000 0.05917 36 6.74 242.64 
0 0000000000 0.89857 31 9.06 280.86 
0 0000000000 0.27206 56 6.33 354.48 
0 0000000000 0.60241 10 4.48 44.80 
0 0000000000 0.13396 61 7.46 455.06 
0 0000000000 0.07143 82 6.43 527.26 
0 0000000000 0.71928 79 7.09 560.11 
0 0000000000 0.23829 14 0.49  6.86 
0 0000000000 0.76097 7 8.61 60.27 
0 0000000000 0.45390 28 3.32 92.96 
1 0000000001 0.73434 2 9.12 18.24 
1 0000000001 0.03091 25 8.09 202.25 

排序正在爲第二列,但不第六 - 它不排序數字,而是由數字開頭的小數表示。

我將非常感謝您的幫助。

回答

0

什麼list.sort(鍵= )確實在列表參數的情況下,它的所有的單個元素轉換爲字符串,並將它們結合傳遞的順序,然後做一個字符串比較排序。因此,9將登記爲高於21.假設所有數字都低於10000,快速解決此問題的方法是:

dataset.sort(key=lambda x: (x[2]/1000, x[5]/1000, x[1]/1000))