2016-07-16 18 views
-1

ハッシュから同じ値を持つすべてのキーを取得し、それらを別々のエントリとして配列に入れようとしています。 [、誰もが私は[[「A」]、[「B」]で終わるように、キーを分離する方法を助言することができRuby - 同じ値を持つハッシュのすべてのキーを取得する

@highest_wf_words << h.select {|k, v| v == val}.keys 

:私は、このコード行を持っているが、それは、単一のエントリとしてですべてを送信します"[" a "、" b "、" c "]]の代わりに" c "]]

+2

「h」のサンプルデータを提供できますか? – oreoluwa

+0

あなたの質問は「同じ値のすべてのキーをどのように得ることができるか」という質問ですが、「指定された値を持つすべてのキーをどのように取得できますか?それらは異なる質問です。 –

+0

申し訳ありませんケリーあなたは正しいです。データが入力される方法は少し後ろです。私は非常にRubyを初めて使っています(これは私の最初の1週間ですので、今のところ私と一緒にいてください:)あなたの回答とアドバイスをいただきありがとうございます! – cbutler

答えて

1

これは多分ですか?

h.select {|k, v| v == val}.keys.each {|k| @highest_wf_words << [k]} 

またはこの:

@highest_wf_words.concat(h.select {|k, v| v == val}.keys.map {|k| [k]}) 
+0

ねえ、ありがとう、それは動作します。とてもかっこいい :) – cbutler

1

私はあなたがハッシュではなく、配列を作成示唆しています。

h = { a: 1, b: 2, c: 1, d: 3, e: 2 } 

h.each_with_object({}) { |(k,v),g| (g[v] ||= []) << k } 
    #=> {1=>[:a, :c], 2=>[:b, :e], 3=>[:d]} 

これは、質問のタイトルによって提起された質問に答えます。

関連する問題