Ruby CSV重新排列数组

时间:2015-04-15 02:19:55

标签: ruby arrays csv

我不确定这个问题的标题是什么,所以如果有人能帮助我,那就太好了。

- 我有一个类似

的CSV文件
ID | Num
a  | 1
a  | 2
a  | 3
b  | 4
b  | 5
c  | 6
c  | 7

我需要结果:

ID | Num
a  | 1,2,3,4
b  | 4,5
c  | 6,7

目前,我的解决方案是:

ary = CSV.open('some_file')

final = Array.new
id = ary[1][0] # ary[0] is "id"
numJoin = ary[1][1]

(1..ary.length).each do |i|
  if id == ary[i+1][0]
    numJoin = numJoin + "," + ary[i+1][1]
  else
    final << [id,numJoin]
    id = ary[i+1][0]
    numJoin = ary[i+1]]1]
  end
end

它有效,但我希望有机会学习其他方法来解决这个问题,因为我认为应该有更简单的方法来解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用group_by,按照传递给它的块的 return 值分组,在这种情况下,它是ID。

ary = ary.group_by { |v| v[0] }

P.S该文件看起来像CSV。