用Ruby转换哈希

时间:2015-05-19 12:21:00

标签: 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中最好的方法是什么?

3 个答案:

答案 0 :(得分:2)

试试这个:

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

我已将UserFollower用作ActiveRecord个类,但这取决于您的设置。

答案 1 :(得分:1)

这将原位转换你的哈希:

hash.values.each { | ids | ids.map! { | id | ... code to transform id to name ... } }

答案 2 :(得分:-1)

您可以这样做:

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}