【问题标题】:Ruby CSV re-arranging ArrayRuby CSV 重新排列数组
【发布时间】:2015-06-20 20:11:25
【问题描述】:

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

- 我有一个 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

它有效,但我想有机会学习其他方法来解决这个问题,因为我认为应该有更简单的方法来做到这一点..

提前致谢。

【问题讨论】:

  • 解释逻辑。不清楚。
  • 您的结果包含两次4,这是错字吗?

标签: ruby arrays csv


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 2012-08-11
    • 2019-08-29
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多