0

在 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​​ 哈希类来做到这一点,或者是否有任何其他数据结构。谢谢。

4

2 回答 2

1

你应该有相反的键和值。

{b => :a, c => :a, h => :a, e => :d, f => :d, g => :d, ...}
于 2013-03-22T09:47:56.473 回答
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)]
于 2013-03-22T10:27:38.930 回答