我有14列的csv文件,我想在第6列然后第2列然后第11列以红宝石排序。
有很好的方法.sort_by但它只适用于两列,不是吗。 array_of_arrays.sort_by {|e| [e[2], e[0],e[1]],}
不起作用。
所以让我们在下面的示例中说我希望它按第3,第1,第2列排序
array_of_arrays = [[1,9,'a'],[2,2,'a'], [2,6,'b'], [1,3,'a'], [2,1,'b']]
array_of_arrays.each {|line| puts line.inspect }
puts
array_of_arrays.sort_by {|e| [e[2], e[0]]} .each {|line| puts line.inspect }
但结果并不理想
[1, 9, "a"]
[2, 2, "a"]
[2, 6, "b"]
[1, 3, "a"]
[2, 1, "b"]
[1, 9, "a"]
[1, 3, "a"]
[2, 2, "a"]
[2, 6, "b"]
[2, 1, "b"]
答案 0 :(得分:9)
此:
array_of_arrays = [[1,9,'a'],[2,2,'a'], [2,6,'b'], [1,3,'a'], [2,1,'b']]
array_of_arrays.each {|line| p line }
puts
array_of_arrays.sort_by {|e| [e[2], e[0], e[1]]} .each {|line| p line }
为我生成以下输出:
[1, 3, "a"]
[1, 9, "a"]
[2, 2, "a"]
[2, 1, "b"]
[2, 6, "b"]
这就是你想要的,对吧?