入力ハッシュ配列は次のようなものです。
[{count: 111, date: A},{count: 222, date: B},{count: 333, date: C}]
私はそれを次のように変換したい:
{A => {count: 111}, B => {count: 222}, C => {count: 333}}
これは単純化されたバージョンにすぎません。ハッシュは非常に大きくなる可能性があります。つまり、多くのキーです。
a = [{count: 111, date: 'A'},{count: 222, date: 'B'},{count: 333, date: 'C'}]
Hash[a.map {|h| [h[:date], {count: h[:count]}]}]
# => {"A"=>{:count=>111}, "B"=>{:count=>222}, "C"=>{:count=>333}}
メソッドはArray#inject
良い選択です:
[{count: 111, date: 'A'},{count: 222, date: 'B'},{count: 333, date: 'C'}].inject({}) do |h, item|
h[item[:date]] = {count: item[:count]}
h
end