2015-01-22 2 views
-3

이 목록을 어떻게 정렬합니까 ()?점수로 목록을 정렬하는 방법은 무엇입니까?

class1=['Andy J:6','Nick P:7','Bob G:1','Evie F:5','James M:9','Jarrod B:10','Sean J:7'] 

그래서 그것을 인쇄 할 때 형식에 있습니다

['Jarrod B:10','Andy J:6','James M:9','Nick P:7', 'Sean J:7', 'Evie F:5' , 'Bob G:1' ] 

그들의 수는 자신의 점수입니다.

+0

귀하의 입력과 출력이 동일한 - 왜 '숀 J'는 말에 여전히 - '이비'와 '제임스'사이에 있어야한다, 확실하게? –

답변

0

.

class1 = ['Andy J:6', 'Nick P:7', 'Bob G:1', 'Evie F:5', 'James M:9', 
      'Jarrod B:10','Sean J:7'] 

print(sorted(class1, key=lambda e: int(e.split(':')[1]))) 

출력 :

['Bob G:1', 'Evie F:5', 'Andy J:6', 'Nick P:7', 'Sean J:7', 'James M:9', 
'Jarrod B:10'] 
1

맞춤 키 기능과 약간의 정규식을 사용하여 원하는 것을 할 수 있습니다.

import re # Regular expressions for string matching 

def score_key(x) : 
    patt = ":(\d+)$" # Matches the score after the colon 
    return int(re.search(patt, x).group(1)) 

class1 = ['Andy J:6','Nick P:7','Bob G:1','Evie F:5','James M:9','Jarrod B:10','Sean J:7'] 
class1.sort(key=score_key) 
print(class1) # ['Bob G:1', 'Evie F:5', 'Andy J:6', 'Nick P:7', 'Sean J:7', 'James M:9', 'Jarrod B:10'] 

내림차순으로 주문하려면 class1.sort(key=score_key, reverse=True)을 대신 사용하십시오.

당신은 방금 내장 간단한 key 함수 인수 —와 sorted() 기능 내가 문자열의 형식은 split() 문자열 메소드를 한번 호출이 적절한 때 re 모듈을 사용하여 보증 할만큼 복잡하다 생각하지 않아 사용할 수 있습니다
+3

're'는 약간 과장된 것입니다.'key = lambda L : int (L.rpartition (':') [2])'충분하다 –

관련 문제