Rails:FasterCSV - 独特的出现次数

时间:2009-01-09 20:39:37

标签: ruby-on-rails ruby fastercsv

我导入了我的CSV文件:

records = FasterCSV.read(path, :headers => true, :header_converters => :symbol)

如何获取数据的唯一出现次数?例如,这里有一些示例数据:

ID,Timestamp
test,2008.12.03.20.26.32
test,2008.12.03.20.26.38
test,2008.12.03.20.26.41
test,2008.12.03.20.26.42
test,2008.12.03.20.26.43
test,2008.12.03.20.26.44
cnn,2008.12.03.20.30.37
cnn,2008.12.03.20.30.49

如果我只是致电records[:id],我就得到:

testtesttesttesttesttestcnncnn

我想得到这个:

testcnn

我该怎么做?

1 个答案:

答案 0 :(得分:2)

如果您的数据不是 masive ,则可以使用Set类。

以下是一个例子:

p ['cnn','test','test','test','test','cnn','cnn'].to_set.to_a
=> ["cnn", "test"]

这是一个简单的基准:

require 'set'
require 'benchmark'

Benchmark.bm(5) do |x|
  x.report("Set")   do
    a = []
    20_000.times do |i|
      a << 'cnn'<< 'test'
    end
    a.to_set.to_a
  end
end

=>
           user     system      total        real

Set    0.110000   0.000000   0.110000 (  0.109000)