获得球员的指数按分数排名

时间:2014-01-24 05:59:02

标签: python lambda indexing

我正在尝试让玩家在我的数据库文件中获得积分的高度。例如:

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

1 个答案:

答案 0 :(得分:1)

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"))