Ruby – 以相同的值获取哈希中的所有键

我试图从哈希中获取具有相同值的所有键,并将它们作为单独的条目放入数组中。 我有这行代码,但它将所有内容作为单个条目发送:

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

任何人都可以建议如何分开键,所以我最终得到[[“a”],[“b”],[“c”]]而不是[[“a”,“b”,“c”]],

也许这个?

 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]}) 

我建议你构建一个哈希而不是一个数组。

 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]} 

这回答了问题标题提出的问题。