2014-01-24 2 views
1

나는 포인트가 내 DB 파일에 얼마나 높은 지 플레이어에게 번호를 매기려고합니다.플레이어 인덱스를 포인트별로 얻는 방법

user points. 
rich 15 
tom 19 
bob 7 

그래서

내가 람다를 사용하는 방법에 대한 생각 그가 가장을 가지고 있기 때문에, 다음은 # 2, # 3의 마지막 밥 등의 풍부한 것, # 1 것 톰의 순위 및 예를 들면 : 색인 그러나 나는 그것이 작동 할 것을 매우 의심한다. 이것은 그것이 지금까지 좋아하는 모습입니다 :

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

예. users는 첫 번째 값이고 points는 두 번째 값입니다. 그리고 아직. – 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

니스. 그렇다면 나는 어떻게 이름과 순위를 얻을 수 있을까? 마치 내 이름이 부자라면 나도 그랬어! ccrank는 "당신은 2 위를 차지했습니다" – user3230748

+0

@ user3230748 이것은 원래 질문의 일부가 아닙니다 :) [이 대답 수락] (http : // meta. stackexchange.com/a/5235/235416)을 참조하십시오. – thefourtheye

+0

Aw xD 이제 너와 나를 괴롭히지 만 괜찮아. 도움을 주셔서 감사합니다 – user3230748

관련 문제