用哈希值中的值替换键

时间:2013-12-01 17:26:16

标签: ruby

用哈希值替换所有键的最佳方法是什么? 我提出了:

Hash[hash.map {|k,v| [v,k]}]

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:5)

有一种内置的方法:

 hash.invert

答案 1 :(得分:2)

可能invert哈希:

{ 'a' => 1, 'b' => 2 }.invert # => {1=>"a", 2=>"b"}

但要注意副作用:

{ 'a' => 1, 'b' => 2, 'c' => 2 }.invert # => {1=>"a", 2=>"c"}

哈希的键必须是唯一的,但值不一定是。当您反转哈希时,重复的值将发生冲突,相互覆盖,最后一个获胜。