使用数组键散列哈希值的简单散列

时间:2017-11-03 10:45:09

标签: arrays ruby hash rails-activerecord

有没有一种简单的方法可以将第一个转换为第二个? 这来自两个连续的ActiveRecord .group()方法。

1) sales = {["USD", 11]=>0.158148e4, ["USD", 10]=>0.35248e3, ["EUR", 10]=>0.3508e3}

2) sales = {"USD": { 11 =>0.158148e4, 10 => 0.35248e3}, "EUR": { 10 =>0.3508e3}}

1 个答案:

答案 0 :(得分:3)

您可以使用Enumerable#each_with_object

sales.each_with_object(Hash.new { |k,v| k[v] = {} }) do |((f, s), v), memo| 
  memo[f][s] = v 
end
#=> {"USD"=>{11=>1581.48, 10=>352.48}, "EUR"=>{10=>350.8}}