散列成分组数组

teh*_*der 3 ruby arrays hash

我不是很有经验的红宝石,所以我很难格式化一块数据.

我有这个哈希,它包含一些具有相同值的键,例如:

{"key" => "value1", "key2" => "value2", "key3" => "value3", "key4" => "value1", "key5" => "value2" ..}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其转换为包含按值分组的键的数组

 [["key","key4"],["key2","key5"],["key3"]]
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激.

And*_*all 6

new_hash = {}
hash.each do |key, value|
  new_hash[value] ||= []
  new_hash[value] << key
end
array = new_hash.values # => [["key", "key4"], ["key2", "key5"], ["key3"]]
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`h.group_by(&:last).map {| _,y | y.map(&:first)}`. (4认同)