Ruby小Case | 词频统计

词频统计,比较下列代码:
 
def count(a)
  arr_uniq = a.uniq
  arr_uniq.each{|i| sum = 0;tmp = i;j = a.length
    while j > 0
      sum += 1 if tmp.eql?(a[j-1])
      j -= 1
    end
    puts tmp.to_s + ':' + sum.to_s
  }
end
 
require 'rubygems'
require 'active_support'
def count(a)
  b=Array.new
  b = a.group_by{|i| i}
  a.uniq.each{|i| p i.to_s+':'+b[i].length.to_s}
end
 
def count(a)
  a.uniq.each{|x| puts "#{x}:#{a.find_all{|i| i==x }.length}"}
end
 
def count(a)
  a.uniq.each{ |x| puts "#{x}:#{a.grep(x).length}" }
end
 
以上代码够简短了吧。。。 。。。但我觉得下面的代码更优秀,因为包含了思想,Ruby的OO思想。。。
 
class Array  
  def word_count
    frequencies=Hash.new(0)
    each do |word|
      frequencies[word]+=1
    end
    return frequencies  
  end  
end

a = %w{hello world ! !}
p a.word_count

p [1,1,2,3,"4",4].word_count
 
 
 
 
 
 

你可能感兴趣的:(职场,Ruby,词频统计,休闲)