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))