散列成分组数组

我不是很有经验的ruby,所以我很难格式化一块数据。

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

{"key" => "value1", "key2" => "value2", "key3" => "value3", "key4" => "value1", "key5" => "value2" ..} 

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

  [["key","key4"],["key2","key5"],["key3"]] 

任何帮助,将不胜感激。

 new_hash = {} hash.each do |key, value| new_hash[value] ||= [] new_hash[value] << key end array = new_hash.values # => [["key", "key4"], ["key2", "key5"], ["key3"]] 
 hash = { "key" => "value1", "key2" => "value2", "key3" => "value3", "key4" => "value1", "key5" => "value2" } hash.group_by { |key, value| value }.values.map { |pairs| pairs.map &:first } # => [["key", "key4"], ["key2", "key5"], ["key3"]] 
 hash.group_by{|k,v| v}.map{|k,v| v.reduce([]){|res,n| res << n.first}}