【发布时间】:2011-01-14 03:39:31
【问题描述】:
我有 14 列的 csv 文件,我想在 ruby 中按第 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"]
【问题讨论】:
-
在您的示例中
}之前有一个逗号array_of_arrays.sort_by {|e| [e[2], e[0],e[1]],}。 -
@J.F.塞巴斯蒂安:没错,这就是为什么不适合我的原因。 :-) 至少其他人可以找到答案,并了解到一个额外的逗号会有很大的不同