From: Jeff Peng Date: 2010-01-11T15:04:57+09:00 Subject: Re: Help 14:25 +0900,Jagadeesh: > DATA = {} > prs = [ > 457678,457678-3,open > 457678,457678-5,closed > 457678,457678-6,open > ] > > prs.each do |line| > (pr, pr_scope, state) = line.split(/,/) > DATA[pr] = Hash[state, pr_scope] > end What you wanted is maybe: ~/tmp$ cat hash.rb prs = [ "457678,457678-3,open", "457678,457678-5,closed", "457678,457678-6,open", ] data = Hash.new do |h,k| h[k] = [] end prs.each do |line| (pr, pr_scope, state) = line.split(/,/) data[pr] << Hash[state, pr_scope] end p data ~/tmp$ ruby hash.rb {"457678"=>[{"open"=>"457678-3"}, {"closed"=>"457678-5"}, {"open"=>"457678-6"}]}