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) は を返す必要があります。ルビーハッシュクラスでこれを行う方法を知っている人はいますか、それとも他のデータ構造がありますか? ありがとう。

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 に答える