键映射到多个值

时间:2013-03-22 09:41:56

标签: ruby data-structures hash

在Ruby中,我希望有类似

的东西
my_hash =  {:a => [b,c,h], :d => [e,f,g]..}
而不是 my_hash= {:a => b ,:a => c ,:a => h , :d => e , :d=> f ,:d => g }。 我不能使用数组作为值,因为我想得到值的关键,即 my_hash.key(c)应该返回一个。 是否有任何机构知道如何使用ruby散列类执行此操作,或者是否有任何其他数据结构。 谢谢。

2 个答案:

答案 0 :(得分:1)

你应该有相反的关键和价值观。

{b => :a, c => :a, h => :a, e => :d, f => :d, g => :d, ...}

答案 1 :(得分:1)

反转哈希可能是你最好的选择,但是,嘿,只是为了踢...

class Hash
  def key_array_with(val)
    self.keys.select { |k| k.include?(val) }.first
  end
end

h = {[:b,:c,:h] => :a, [:e,:f,:g] => :d}
h[h.key_array_with(:c)]