1
我已散列的下面阵列:红宝石,转散列的阵列分成单个散列
a = [{:a => 1, :b => "x"}, {:a => 2, :b => "y"}]
我需要把它变成:
z={"x" => 1, "y" => 2}
或:
z={1 => "x", 2 => "y"}
我能否以干净而实用的方式做到这一点?
我已散列的下面阵列:红宝石,转散列的阵列分成单个散列
a = [{:a => 1, :b => "x"}, {:a => 2, :b => "y"}]
我需要把它变成:
z={"x" => 1, "y" => 2}
或:
z={1 => "x", 2 => "y"}
我能否以干净而实用的方式做到这一点?
事情是这样的:
Hash[a.map(&:values)] # => {1=>"x", 2=>"y"}
,如果你想其他的办法:
Hash[a.map(&:values).map(&:reverse)] # => {"x"=>1, "y"=>2}
结合了来自@squiguy建议:
Hash[a.map(&:values)].invert
你可以只用'invert'为底部的例子,因为它会处理重复的键,但+1。 – squiguy
@squiguy感谢您的提示! +1 – rainkinz