Arrays Ruby:如何将字符串数组转换为哈希?

Arrays Ruby:如何将字符串数组转换为哈希?,arrays,ruby,Arrays,Ruby,我需要像这样转换数组: codes = ["AAAA 2.0", "BBBB 1.0", "CCCC n/a", "DDDD"] codes = { "AAAA" => "2.0", "BBBB" => "1.0", "CCCC" => "n/a", "DDDD" => "" } 变成如下的散列: codes = ["AAAA 2.0", "BBBB 1.0", "CCCC n/a", "DDDD"] codes = { "AAAA" =>

我需要像这样转换数组:

codes = ["AAAA 2.0", "BBBB 1.0", "CCCC n/a", "DDDD"]
codes = {
  "AAAA" => "2.0",
  "BBBB" => "1.0",
  "CCCC" => "n/a",
  "DDDD" => ""
}
变成如下的散列:

codes = ["AAAA 2.0", "BBBB 1.0", "CCCC n/a", "DDDD"]
codes = {
  "AAAA" => "2.0",
  "BBBB" => "1.0",
  "CCCC" => "n/a",
  "DDDD" => ""
}
你有没有想过如何以最好的方式处理这个问题

hash = {}
codes.each { |a| hash[a.split[0]] = a.split[1].to_s }
hash
#=> {"AAAA"=>"2.0", "BBBB"=>"1.0", "CCCC"=>"n/a", "DDDD"=>""}
或者(如果您同意
nil
):

当我们想将其转换为散列时,我想向每个大小为1的数组追加一个空字符串。提供了一种方便的方法:

b = codes.map { |s| s.split(/\s+/).tap { |a| a << "" if a.size==1 } }
  #=> [["AAAA", "2.0"], ["BBBB", "1.0"], ["CCCC", "n/a"], ["DDDD", ""]]

.map(&:split)
看起来更好:)是的。我把它作为替代解决方案发布,因为这里
“DDDD”=>nil
。有趣的是
[[“dddddd”]]。to_h
会引发一个错误,但
散列[[“ddddd”]]
有效successfully@shivam-谢谢。我使用了:codes_h=Hash[codes.map(&:split)],但出现了一个错误:“元素数无效(1..2为3)(参数错误)”。@msayen只有当
codes
中的元素有3个单词时才会发生这种情况,这不是问题示例的一部分。
b = codes.map { |s| s.split(/\s+/).tap { |a| a << "" if a.size==1 } }
  #=> [["AAAA", "2.0"], ["BBBB", "1.0"], ["CCCC", "n/a"], ["DDDD", ""]]
 b.to_h
   #=> {"AAAA"=>"2.0", "BBBB"=>"1.0", "CCCC"=>"n/a", "DDDD"=>""}