rubyの配列をHashに変換
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]な配列を、
{0=>"A", 1=>"B", 2=>"C", 3=>"D", 4=>"E", 5=>"F", 6=>"G", 7=>"H", 8=>"I", 9=>"J"}なHashに変換したい時、
>> RUBY_DESCRIPTION => "ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9.6.0]" >> ary_val = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"] >> ary_val.enum_for(:each_with_index).inject({}){|hs,elm| hs[elm[1]] = elm[0]; hs}
ああ、以下でいいのだけれど
>> ary_val.each_with_index.inject({}){|hs,elm| hs[elm[1]] = elm[0]; hs}
とやって悦に入っていた。今日の俺。ですが、
>> ary_key = (0..ary_val.size-1).to_a >> ary = [ary_key, ary_val].transpose >> Hash[*ary.flatten] => {5=>"F", 0=>"A", 6=>"G", 1=>"B", 7=>"H", 2=>"C", 8=>"I", 3=>"D", 9=>"J", 4=>"E"} >>
とやったほうが分かりやすいか?と。ていうか、
>> Hash[0, "A", 1, "B", 3, "C"] => {0=>"A", 1=>"B", 3=>"C"}
を知らなかった。