我正在尝试让玩家在我的数据库文件中获得积分的高度。例如:
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
答案 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"))