2014-01-24 88 views
1

我想讓玩家在我的DB文件中點數有多高。例如:獲得玩家排名的分數

user points. 
rich 15 
tom 19 
bob 7 

因此,湯姆的排名將#1,因爲他具有最高的,那麼這將是豐富的,在#2和#3最後鮑勃等

我想過使用Lambda和指數,但我非常懷疑它會起作用。這是它看起來喜歡到目前爲止:

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

'但我非常懷疑它會工作.'你試過了嗎?你還使用什麼數據結構?它是一個用戶作爲鍵和點作爲值的字典嗎? – Nabla

+0

是它的一個字典。用戶是第一個值,點是第二個值。還沒有。 – user3230748

回答

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

不錯。那麼我怎樣才能得到他們的名字和等級呢?如果我是我的名字是富有的,我做了!它會返回「你是排名#2」 – user3230748

+0

@ user3230748這不是原始問題的一部分:)請考慮[接受這個答案](http:// meta。 stackexchange.com/a/5235/235416)如果它可以幫助你。 – thefourtheye

+0

噢xD現在你把我搞亂了,但沒關係。感謝您的幫助 – user3230748