Ruby,将哈希数组转换为单个哈希

时间:2013-07-08 22:47:20

标签: ruby arrays hash

我有以下哈希数组:

a = [{:a => 1, :b => "x"}, {:a => 2, :b => "y"}]

我需要把它变成:

z={"x" => 1, "y" => 2} 

或:

z={1 => "x", 2 => "y"}

我能以干净,实用的方式做到这一点吗?

1 个答案:

答案 0 :(得分:2)

这样的事情:

Hash[a.map(&:values)] # => {1=>"x", 2=>"y"}

如果你想要另一种方式:

Hash[a.map(&:values).map(&:reverse)] # => {"x"=>1, "y"=>2}

纳入@squiguy的建议:

Hash[a.map(&:values)].invert