私はRubyが初めてで、問題を解決しようとしています。私はハッシュの配列を持っています:
list = [{"amount"=>2.25,"rel_id"=>1103, "date"=>"2012-12-21"},
{"amount"=>2.75,"rel_id"=>1103, "date"=>"2012-12-24"},
{"amount"=>2.85,"rel_id"=>666, "date"=>"2012-12-27"},
{"amount"=>3.15,"rel_id"=>666, "date"=>"2012-12-28"}
#and many many more..
]
これらを rel_id でグループ化する必要があります。これにより、合計金額と日付を次のような形式で確認できます。
{1103=>{:total_amount=>5.0, :dates=>["2012-12-21", "2012-12-24"]}, 666=>{:total_amount=>6.0, :dates=>["2012-12-27", "2012-12-28"]}}
私はこれをこの方法で解決しましたが、それはそれを行うための最悪のアプローチの1つであると確信しており、ルビーの方法ではないと思います..
results = {}
list.each do |line|
if !(results.has_key?(line["rel_id"]))
results[line["rel_id"]]={:total_amount=>line["amount"],:dates=>[line["date"]]}
else
results[line["rel_id"]][:total_amount] = results[line["rel_id"]][:total_amount]+line["amount"]
results[line["rel_id"]][:dates]<<line["date"]
end
end
たぶん、ルビーの方法でより美しく、より美しいアプローチを実装する方法を教えてください。