簡體   English   中英

如何通過三個或更多元素(ruby)對數組進行排序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM