7

次のような配列を持つハッシュの配列があります。

result = [
  {"id_t"=>["1"], "transcript_t"=>["I am a transcript ONE"]},
  {"id_t"=>["2"], "transcript_t"=>["I am a transcript TWO"]},
  {"id_t"=>["3"], "transcript_t"=>["I am a transcript THREE"]}
]

可能であれば、私がやりたいことは、各キー=>値のペアが各ハッシュの値から取得される1つのハッシュになるように変換することです。うまく説明できていないと思いますので、次のように言いたいと思います。

end_result = {
  "1"=>"I am a transcript ONE",
  "2"=>"I am a transcript TWO",
  "3"=>"I am a transcript THREE"
}

私は Stack Overflow と Google でさまざまな方法を調べてきましたが、その過程で混乱してしまいました。これを達成する方法についてのアイデアはありますか?

4

2 に答える 2

14

Hash[]ソリューションの鍵は、キー/値の配列に基づいてハッシュを作成することだと思います。

Hash[[["key1", "value1"], ["key2", "value2"]]]
#=> {"key1" => "value1", "key2" => "value2"}

のセットを追加するだけでmap、解決策が得られます。

result = [
  {"id_t"=>["1"], "transcript_t"=>["I am a transcript ONE"]},
  {"id_t"=>["2"], "transcript_t"=>["I am a transcript TWO"]},
  {"id_t"=>["3"], "transcript_t"=>["I am a transcript THREE"]}
]
Hash[result.map(&:values).map(&:flatten)]
于 2013-01-09T21:11:58.297 に答える