Ruby 1.8.7:使用可枚举类型的sum对_进行分组
我有一系列记录,这些记录按以下结构排列:Ruby 1.8.7:使用可枚举类型的sum对_进行分组,ruby,enumerable,Ruby,Enumerable,我有一系列记录,这些记录按以下结构排列: 使用Ruby的groupby/inject/sum或Enumerable提供的任何东西返回一个有序的散列数组,其中每个散列由“some_id”键控,值是该id的“some_total”的总和,最好的方法是什么“按数组开始处总数量最高的id排序?结果如下所示: [{“some_id”=>2,“sum”=>350}, {“some_id”=>3,“sum=>125}, {“some_id”=>1,“sum”=>10}]函数方法: hs.group_by {
使用Ruby的groupby/inject/sum或Enumerable提供的任何东西返回一个有序的散列数组,其中每个散列由“some_id”键控,值是该id的“some_total”的总和,最好的方法是什么“按数组开始处总数量最高的id排序?结果如下所示:
[{“some_id”=>2,“sum”=>350},
{“some_id”=>3,“sum=>125},
{“some_id”=>1,“sum”=>10}]
函数方法:
hs.group_by { |h| h["some_id"] }.map do |id, hs|
sum = hs.map { |h| h["some_total"] }.inject(:+)
{:some_id => id, :sum => sum}
end.sort_by { |h| -h[:sum] }
#=> [{:some_id=>2, :sum=>350},
# {:some_id=>3, :sum=>125},
# {:some_id=>1, :sum=>10}]