如何返回哈希的索引位置

时间:2015-12-15 13:53:22

标签: arrays ruby hash

全部,我试图计算组中每个用户的胜率,按胜率对用户进行排序,并返回用户的排名 - 即用户在组内设置胜率的位置。

因此,对于胜率最高的用户,该函数应返回“1”。

到目前为止,我的代码是:

def rank (user, group)
    users = UserGroup.select(:user_id).where(group_id => group)
    user = user.id
    rank = Hash.new
    users.each do |user|
      total = Game.where("group_id = ? AND (user1 = ? OR user2 = ?"), group user_id, user_id).count
      win = Game.where(:group_id => group, :winner => user).count
      win_percentage = win/total.to_f
      ranks[:user] = win_percentage
    end
    ranks.sort_by{|key, value|, value}.to_h
    return ranks.each_with_index.detect{|(key, value), index| key == user).last +1
end

我认为一切都应该没问题,但我无法弄清楚如何根据键返回哈希的索引。我认为我可能需要转换为数组数组并使用Array #index;但我也不清楚如何找到一个数组数组的索引。

1 个答案:

答案 0 :(得分:0)

  

如何根据键

返回哈希的索引

您可以使用class ProfileSerializer(serializers.ModelSerializer): class Meta: model = Profile fields = ('username',) 。一个简单的例子:

each_with_index
相关问题