How do I change all the keys of a hash by a new set of given keys?
Is there a way to do that elegantly?
h = { 'foo'=>1, 'bar'=>2 } key_map = { 'foo'=>'foozle', 'bar'=>'barzle' } h.each_with_object({}) { |(k,v),g| g[key_map[k]]=v } #=> {"foozle"=>1, "barzle"=>2}
or
h.reduce({}) { |g,(k,v)| g.merge(key_map[k]=>v) } #=> {"foozle"=>1, "barzle"=>2}