Группируйте хэши по ключам и суммируйте значения

У меня есть массив хэшей:

[{"Vegetable"=>10}, {"Vegetable"=>5}, {"Dry Goods"=>3>}, {"Dry Goods"=>2}]

Мне нужно использовать inject здесь, я думаю, но я действительно боролся.

Я хочу новый хеш который отражает сумму повторяющихся ключей предыдущего хеша:

[{"Vegetable"=>15}, {"Dry Goods"=>5}]

Я контролирую код, который выводит этот хэш, поэтому я могу изменить его при необходимости. Результатами в основном были хэши, потому что это могло закончиться вложением любого количества уровней в глубину, и тогда легко вызвать сглаживание в массиве, но не сгладить ключи / значения хеша:

def recipe_pl(parent_percentage=nil)
  ingredients.collect do |i|

    recipe_total = i.recipe.recipeable.total_cost 
    recipe_percentage = i.ingredient_cost / recipe_total

    if i.ingredientable.is_a?(Purchaseitem)
      if parent_percentage.nil?
        {i.ingredientable.plclass => recipe_percentage}
      else
        sub_percentage = recipe_percentage * parent_percentage
        {i.ingredientable.plclass => sub_percentage}
      end
    else
      i.ingredientable.recipe_pl(recipe_percentage)
    end
  end
end 
40
задан the Tin Man 28 March 2016 в 23:16
поделиться