userIdList = [1,2,1,1,2,3,4,4] #group by count x = userIdList.inject(Hash.new(0)) { |h, e| h[e] += 1 ; h } reward_num_list = x.values.uniq.sort #open f_list = [] reward_num_list.each do |n| filename = n.to_s + '.txt' f_list[n] = open(filename, 'w') end #write x.each_with_index do |(userId, num), i| s = userId.to_s + "\n" f_list[num].write(s) end #close reward_num_list.each do |n| filename = n.to_s + '.txt' f_list[n].close end
.
output: 1.txt 2.txt 3.txt