On 25.01.2007 03:29, Daniel Martin wrote: > Vincent Fourmond <vincent.fourmond / 9online.fr> writes: > >> Actually, I've got shorter ;-): >> >> h = {} >> for k,v in hash >> [*k].each {|l| h[l] = v} >> end >> hash = h > > Well, if we're golfing: > > h={};hash.map{|k,v|[*k].map{|t|h[t]=v}};h Not really shorter but I though there should be at least one solution with #inject: >> hash.inject({}){|h,(k,v)| k.to_a.each {|x| h[x]=v};h} => {"new"=>"manage_all", "edit"=>"manage_one", "destroy"=>"manage_all", "create"=>"manage_all", "index"=>"list", "update"=>"manage_one"} >> hash.inject({}){|h,(k,v)| k.each {|x| h[x]=v} rescue h[k]=v;h} => {"new"=>"manage_all", "edit"=>"manage_one", "destroy"=>"manage_all", "create"=>"manage_all", "index"=>"list", "update"=>"manage_one"} :-) robert