用Ruby转换Hash

用Ruby转换Hash,ruby,hash,Ruby,Hash,我有一个简单的散列,看起来像这样: {"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]} 键等于用户名,值等于用户ID。 现在,我想转换此哈希以返回如下数据: {"User 12"=>[Follower name], "User 10"=>[Follower name], "User 2"=>[Follower name], "User 11"=>[Follower name]} 在Ruby中最好的方法是什么?

我有一个简单的散列,看起来像这样:

{"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]}
键等于用户名,值等于用户ID。 现在,我想转换此哈希以返回如下数据:

{"User 12"=>[Follower name], "User 10"=>[Follower name], "User 2"=>[Follower name], "User 11"=>[Follower name]}

在Ruby中最好的方法是什么?

您可以这样做:

res = {}
hash =  {"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]}
hash.each{ |k,v| res["User #{k}"] = Follower.find(v.first).name }
res
# => {"User 12"=>Follower name, "User 10"=>Follower name, "User 2"=>Follower name, "User 11"=>Follower name}

这将就地转换哈希:

hash.values.each { | ids | ids.map! { | id | ... code to transform id to name ... } }
试试这个:

hash = {"12"=>[1], "10"=>[1], "2"=>[1], "11"=>[1]}
hash.each_with_object({}) do |(user_id, follower_ids), hash|
  hash[User.find(user_id).name] = follower_ids.map { |follower_id| Follower.find(follower_id).name }
end

我使用了
User
Follower
作为
ActiveRecord
类,但这取决于您的设置。

名称从何而来?当您想要获得Follower name:Follower.find(id).name时。但这并不重要。我只是想找个例子,我会根据我的需要申请。钥匙也要查一下吗?您编写了“key等于User name”,但在您的示例中,似乎不是这样。