Ruby 要散列的二维数组

Ruby 要散列的二维数组,ruby,arrays,hash,Ruby,Arrays,Hash,在Ruby中,给定一个数组: {"server"=>["nginx/1.1.19"], "date"=>["Wed, 08 Jan 2014 18:48:02 GMT"],"content-type"=>["application/json; charset=utf-8"]} 将其转换为哈希的最佳方式是: {"server"=>"nginx/1.1.19", "date"=>"Wed, 08 Jan 2014 18:48:02 GMT","content-type

在Ruby中,给定一个数组:

{"server"=>["nginx/1.1.19"], "date"=>["Wed, 08 Jan 2014 18:48:02 GMT"],"content-type"=>["application/json; charset=utf-8"]}
将其转换为哈希的最佳方式是:

{"server"=>"nginx/1.1.19", "date"=>"Wed, 08 Jan 2014 18:48:02 GMT","content-type"=>"application/json; charset=utf-8"}
按以下步骤进行:

Hash[h.map{|k,v| [k,v[0]] }]
# => {"server"=>"nginx/1.1.19",
#     "date"=>"Wed, 08 Jan 2014 18:48:02 GMT",
#     "content-type"=>"application/json; charset=utf-8"}
按以下步骤进行:

Hash[h.map{|k,v| [k,v[0]] }]
# => {"server"=>"nginx/1.1.19",
#     "date"=>"Wed, 08 Jan 2014 18:48:02 GMT",
#     "content-type"=>"application/json; charset=utf-8"}

您拥有的是
散列
而不是
数组

h = {"server"=>["nginx/1.1.19"], "date"=>["Wed, 08 Jan 2014 18:48:02 GMT"],"content-type"=>["application/json; charset=utf-8"]}

Hash[h.map(&:flatten)]

# {"server"=>"nginx/1.1.19", "date"=>"Wed, 08 Jan 2014 18:48:02 GMT", "content-type"=>"application/json; charset=utf-8"}

您拥有的是
散列
而不是
数组

h = {"server"=>["nginx/1.1.19"], "date"=>["Wed, 08 Jan 2014 18:48:02 GMT"],"content-type"=>["application/json; charset=utf-8"]}

Hash[h.map(&:flatten)]

# {"server"=>"nginx/1.1.19", "date"=>"Wed, 08 Jan 2014 18:48:02 GMT", "content-type"=>"application/json; charset=utf-8"}
然后将其合并为一个哈希:

 h2.inject({}) do |acc, el|
   acc.merge el
 end
#=> {"server"=>"nginx/1.1.19", "date"=>"Wed, 08 Jan 2014 18:48:02 GMT", "content-type"=>"application/json; charset=utf-8"}
我假设每个值都可以是字符串数组,若值只包含一个字符串,那个么选择另一个更简单的答案

然后将其合并为一个哈希:

 h2.inject({}) do |acc, el|
   acc.merge el
 end
#=> {"server"=>"nginx/1.1.19", "date"=>"Wed, 08 Jan 2014 18:48:02 GMT", "content-type"=>"application/json; charset=utf-8"}

我假设每个值都可以是字符串数组,如果值只包含一个字符串,请选择另一个更简单的答案。

您表示为数组的内容实际上已经是散列。您表示为数组的内容实际上已经是散列。我看到您在使用“convert”这个词,这很好。要保留,
散列。每个_与_对象({}){|(k,v),h | h[k]=v.first}
。我看到您正在使用“convert”这个词,这很好。要保留,
hash.each_with_object({}){(k,v),h|h[k]=v.first}