现在我在rails上编写代码,因为必须从值中获取密钥。 但是我的代码并不像我想的那样聪明。
TYPE = {
1 => "A", 2 => "B", 3 => "C", 4 => "D"
}
def get_key_from_value(val)
TYPE.each do |k,v|
if v==val
return k
end
end
nil
end
puts get_key_from_value "B" #=> 2
因此,请让我知道如何使用值选择Ruby的Hash对象的键的最聪明的方法。
答案 0 :(得分:3)
只需使用Hash#key方法:
h = {a: 1, b: 2, c: 3, d: 4}
h.key(4) # => :d
与你的例子相同:
h = {1=>"A", 2=>"B", 3=>"C", 4=>"D"}
h.key("D") # => 4
答案 1 :(得分:2)
一种可能性是使用Hash.invert:
TYPE = {
1 => "A", 2 => "B", 3 => "C", 4 => "D"
}
TYPE_INVERT = TYPE.invert #you'll probably want a better name than this
puts TYPE_INVERT['B'] #=> 2
如果你的哈希有多个具有相同值的键,你需要小心,因为你只能在反向哈希中得到其中一个。