1

次のハッシュの配列があります。

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

私はそれを次のように変える必要があります:

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

また:

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

クリーンで機能的な方法でこれを行うことはできますか?

4

1 に答える 1

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
于 2013-07-08T22:50:42.340 に答える