一个球员得分排名指数的获取

2024-05-16 22:14:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图得到一个球员的排名有多高,他们的分数在我的数据库文件。例如:

user points.
rich 15
tom 19
bob 7

所以汤姆的排名是1,因为他拥有最高的财富,然后是2,最后是3,等等

我考虑过使用lambda和index,但我非常怀疑它是否有效。到目前为止,情况是这样的:

def rank():
    datalist = sorted(Point.dPoint.items(), key=lambda x: x[1][0], reverse=True)
    rank = datalist.index(l[0], beg=1, len(datalist))
    return rank

Tags: 文件lambda数据库index分数pointsbob球员
1条回答
网友
1楼 · 发布于 2024-05-16 22:14:35
data = {"rich": 15, "tom": 19, "bob": 7}
print list(enumerate(sorted(data, key = lambda x: int(data[x]), reverse=True),1))

输出

[(1, 'tom'), (2, 'rich'), (3, 'bob')]

你可以进一步扩展它,像这样,得到每个人的等级

def calculate_rank(data):
    data = {v:k for k, v in enumerate(sorted(data,key=lambda x:int(data[x]),reverse=True),1)}
    def get_rank(name):
        return data[name]
    return get_rank

get_rank = calculate_rank({"rich": 15, "tom": 19, "bob": 7})
print "You are ranked #{}".format(get_rank("tom"))
print "You are ranked #{}".format(get_rank("rich"))
print "You are ranked #{}".format(get_rank("bob"))

相关问题 更多 >