Ruby 给定一个数组,返回一个散列

Ruby 给定一个数组,返回一个散列,ruby,Ruby,编写一个方法,该方法给定一个数组,返回一个哈希值,其关键字是数组中的单词,其值是每个单词出现的次数 arr=["A", "man", "a", "plan", "a", "canal","Panama"] # => {'a' => 3, 'man' => 1, 'canal' => 1, 'panama' => 1, 'plan' => 1} 我如何做到这一点?这是我的密码: hash={} arr.each do |i| hash.each do

编写一个方法,该方法给定一个数组,返回一个哈希值,其关键字是数组中的单词,其值是每个单词出现的次数

arr=["A", "man", "a", "plan", "a", "canal","Panama"]
# => {'a' => 3, 'man' => 1, 'canal' => 1, 'panama' => 1, 'plan' => 1}
我如何做到这一点?这是我的密码:

hash={}
arr.each do |i|
    hash.each do |c,v|
       hash[c]=v+1
    end
end       
输出

p r
#==> {"a"=>3, "man"=>1, "plan"=>1, "canal"=>1, "panama"=>1}

这和正则表达式有什么关系?你需要什么帮助?你可以建议使用正则表达式!!参见本文:如何创建如上所示的散列可以简化为注入的
{h,k | h[k.downcase]+=1;h}
arr.inject­(Hash.new(­0)){|h,k| k.dow­ncase!; h[k] += 1; h}
arr = ["A", "man", "a", "plan", "a", "canal","Panama"]
r = {}
arr.each { |e| e.downcase!; r[e] = arr.count(e) if r[e].nil? }
p r
#==> {"a"=>3, "man"=>1, "plan"=>1, "canal"=>1, "panama"=>1}