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"]}
]

如果可能的话,我想做的是将它转换为一个哈希,其中每个键=>值对都取自每个哈希的值。我不认为我解释得很好,所以这就是我的意思:

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 回答
0

试试这个

result.inject({}){|acc, hash| acc[hash.values[0][0]] = hash.values[1][0]; acc }

=> { "1"=>"I am a transcript ONE", 
     "2"=>"I am a transcript TWO",
     "3"=>"I am a transcript THREE" } 
于 2017-06-06T13:59:55.997 回答