def self.foo
[
["a","aa"],
["b","bb"],
]
end
鉴于“a”,我应该能够检索“aa” 鉴于“bb”,我应该能够检索“b”
我该怎么做?
答案 0 :(得分:2)
ar = [
["a","aa"],
["b","bb"],
]
p ar.assoc("a").last #=> "aa"
p ar.rassoc("bb").first #=> "b"
答案 1 :(得分:0)
Hash[self.foo].invert["bb"] #=> "b"
Hash[self.foo]["a"] #=> "aa"
Hash[]
将数组转换为哈希
Hash#invert
反转哈希值,以便所有值都映射到键
如果你想同时做到这两点:
Hash[self.foo]["bb"] or Hash[self.foo].invert["bb"] #=> "b"
答案 2 :(得分:0)
我会创建自己的“bimap”实现,可能是这样的:
class Bimap < Hash
alias :__put__ :[]=
def []=(key,value)
__put__(key,value)
__put__(value,key)
end
alias :__size__ :size
def size
__size__ / 2
end
# ...any other Hash methods to reimplement?
end