[英]how to sort an array of arrays by three or more elements (ruby)
我有14列的csv文件,我想在紅寶石中按第6列排序,然后排在第2列,然后排在第11列。
有很好的方法.sort_by但它只適用於兩列,不是嗎。 和array_of_arrays.sort_by {|e| [e[2], e[0],e[1]],}
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 = [[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"]
這就是你想要的,對吧?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.