From: daz Date: 2009-11-29T02:15:09+09:00 Subject: Re: iterate over a hash with values containing a array of hashes Bruno Moura wrote: > Hi > > I need iterate over a hash with values containing a array of hashes for > build a string with comma values > > (...) > > Everyone can help me with this? > > thanks so much ###======================== input = {"F15"=> [ {"first"=>"01", "last"=>"" , "data"=>"ATX", "Xcode"=>"F15", "type"=>"G_TRD"}, {"first"=>"Aero", "last"=>"Z", "data"=>"VTA", "Xcode"=>"F15", "type"=>"H_TGFE"}, {"first"=>"digg", "last"=>"" , "data"=>"GFC", "Xcode"=>"F15", "type"=>"T_1000"}], "F17"=> [ {"first"=>"X01", "last"=>"Sx", "data"=>"ATT", "Xcode"=>"F17", "type"=>"H_TGFE"}, {"first"=>"DEF", "last"=>"Z", "data"=>"VTA", "Xcode"=>"F17", "type"=>"G_TRD"}, {"first"=>"EDF", "last"=>"FR" , "data"=>"CFC", "Xcode"=>"F17", "type"=>"T_900"}]} chk_answer = ["F15;first;01;last;;data;ATX;Xcode;F15;type;G_TRD", "F15;first;Aero;last;Z;data;VTA;Xcode;F15;type;H_TGFE", "F15;first;digg;last;;data;GFC;Xcode;F15;type;T_1000", "F17;first;X01;last;Sx;data;ATT;Xcode;F17;type;H_TGFE", "F17;first;DEF;last;Z;data;VTA;Xcode;F17;type;G_TRD", "F17;first;EDF;last;FR;data;CFC;Xcode;F17;type;T_900" ] #~~~ res = [] # results input.sort.each do |k1,a1| a1.each do |h| out = '' << k1 ['first', 'last', 'data', 'Xcode', 'type'].each do |k2| out << sprintf(';%s;%s', k2, h[k2]) # append to string end res << out # push line into result array end end #~~~ puts '*** C o r r e c t ***' if res == chk_answer puts res ###======================== # :) daz