Я не уверен, что вам нужен хеш, потому что я не делаю несколько записей в каждом хэше. поэтому я начну с небольшого изменения вашего представления данных.
ProductCount=Struct.new(:name,:count)
data = [ProductCount.new("Vegetable",10),
ProductCount.new("Vegetable",5),
ProductCount.new("Dry Goods",3),
ProductCount.new("Dry Goods",2)]
Если хэши могут иметь несколько пар ключ-значение, то вы, вероятно, захотите сделать это
data = [{"Vegetable"=>10}, {"Vegetable"=>5}, {"Dry Goods"=>3>}, {"Dry Goods"=>2}]
data = data.map{|h| h.map{|k,v| ProductCount.new(k,v)}}.flatten
Теперь используйте драгоценный камень граней следующим образом
require 'facets'
data.group_by(&:name).update_values{|x| x.map(&:count).sum}
Результат
{"Dry Goods"=>5, "Vegetable"=>15}