ruby类hash有方法“invert”,它在键和值之间进行“reverse”,并删除相同的键(在我们的例子中是:“1=>:a”)。
h={a:1,b:2,c:1}
=>{:a=>1,:b=>2,:c=>1}
H.倒置
=>{1=>:c,2=>:b}
如何实现自定义哈希方法“c_invert”,它将返回第一对(不是最后一对)重复的key=>值检查:
> h = {a: 1, b: 2, c: 1}
=> {:a=>1, :b=>2, :c=>1}
> h.c_invert
=> {1=>:a, 2=>:b}
最佳答案
class Hash
def c_invert
Hash[to_a.reverse].invert
end
end
或
class Hash
def c_invert
Hash[to_a.reverse.map(&:reverse)]
end
end