0

入力ハッシュ配列は次のようなものです。

[{count: 111, date: A},{count: 222, date: B},{count: 333, date: C}]

私はそれを次のように変換したい:

{A => {count: 111}, B => {count: 222}, C => {count: 333}}

これは単純化されたバージョンにすぎません。ハッシュは非常に大きくなる可能性があります。つまり、多くのキーです。

4

3 に答える 3

2
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}}
于 2013-11-06T01:23:54.070 に答える
0

メソッドは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
于 2013-11-06T01:59:18.710 に答える