如何将多级数组中的唯一值映射到value => array的散列?

Rus*_*rry 2 ruby arrays hash ruby-on-rails hashmap

我有一个看起来像这样的数组:

[[100, "one"],
 [101, "one"],
 [102, "one"],
 [103, "two"],
 [104, "three"],
 [105, "three"]]
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个看起来像这样的哈希数组

[{"one" => [100,101,102]},
 {"two" => [103]},
 {"three" => [104,105]}]
Run Code Online (Sandbox Code Playgroud)

数字部分将始终是唯一的,字符串部分将具有重复项.我想到这样做的每一种方式我都有一些很长的功能,我想知道实现这个问题的"轨道方式",我确信有一些我不知道的模糊功能.

Jos*_*man 5

不是Rails助手,但常见的Ruby成语可以帮助你.一点

arr.inject({}) { |h,(v,k)| h[k] ||= []; h[k] << v; h }
Run Code Online (Sandbox Code Playgroud)

会做的.