在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散列类执行此操作,或者是否有任何其他数据结构。
谢谢。
答案 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)]