From: Christian Date: 2007-08-17T17:54:58+09:00 Subject: MultiValuedHash I have a lot of files in an folder and want loop over the files in a special way: Dir.entries("f:/test/").each { |e| filenames.push(e[3..50])} Now i have an array with the distinct names like: a.txt b.txt c.txt d.txt ... z.txt , but every file "have 20 parts" which i have to proceed: 00_a.txt 01_a.txt 02_a.txt .. 19_a.txt for i in 0..19 filenames.map{ |t| if i < 10 then p "0#{i}_#{t}" else p "#{i}_#{t}" end } end I find something about MultiValuedHash, but i didn't know how i get my structure (....the distinct names are the keys and the 20 parts for every key as values ) like the raw_data in an easy way. raw_data=[[1,'a'],[1,'b'],[1,'c'],[2,'a'],[2,['b','c']], [3,'c']] class MultiValuedHash < Hash def []=(key,value) if has_key?(key) super(key,[value,self[key]].flatten) else super end end end hash=MultiValuedHash.new raw_data.each{ |x,y| hash[x]=y } many thanks & regards Christian