There's probably something simpler, and maybe one of the really smart folks will wander by with something cool and zen-like but this works for now:
hash = {"10am - 2pm"=>"Sun - Sat", "5pm - 7pm"=>"Sun - Sat"}
hash.group_by{ |k,v| v }.each_with_object({}) { |(k,v), h| h[v.map(&:first).join(', ')] = k }
Which generates:
{
"10am - 2pm, 5pm - 7pm" => "Sun - Sat"
}
@muistooshort makes a good point:
Why combine them into a string when you can use arrays as keys in a Ruby hash?
hash.group_by{ |k,v| v }.each_with_object({}) { |(k,v), h| h[v.map(&:first)] = k }
{
[ "10am - 2pm", "5pm - 7pm" ] => "Sun - Sat"
}