2015-02-06 3 views
-9

나는 람다 분할을 사용하여 텍스트 파일에서 점수를 1-10까지 수치 적으로 정렬하는 프로그램을 만들려고합니다.람다 분할을 사용하여 파이썬에서 정렬하는 방법?

openfile = open("Class1.txt","r") 
     newlist = openfile.readlines() 
     openfile.close() 
     sortedlist = [] 
elif subclass == "3": 
      print("Now sorting highest to lowest scores \n") 
      sortedlist.sort(key=lambda x: x[2]) 
      sortedlist.sort() 
      for eachline in newlist: 
       print(eachline) 

또한 텍스트 파일의 3 부분, 이름의 두 번째 이름 및 점수가 마지막 비트로 있습니다. 가장 낮은 곳에서 가장 높은 곳으로 그리고 그 반대 방향으로 갈 필요가 있습니다.

+0

이 질문은 귀하가 시도한 것을 우리에게 보여 주면 대답하기가 훨씬 쉽습니다. 왜 그 질문이 효과가 없었습니까? 지금 당장 당신이 숙제를하기를 원하는 것처럼 보입니다. – Kevin

+0

들여 쓰기를 수정하고 무엇을 묻고 있습니까? –

+0

프로그램을 실행하고 점수를 숫자로 정렬하려면 선택하면 점수를 정렬하거나 아무것도 정렬하지 않고 텍스트 파일에있는 방식으로 인쇄합니다. 문제는 무엇인지 묻는 것뿐입니다. – Mafesto

답변

1

나는 그것을 시도하고 같은 문제를 발견했다. 그냥 int로 바꾸면 작동 할 것이다.

문제는 숫자가 정렬되는 것일 수 있지만 문자열이기 때문에 정수가 아닌 숫자로 정렬됩니다.

: 예를 들어

,

sorted(['90', '123445']) 

반환

['123445', '90'] 

1 여기보다 작은 9.

때문에 내가 당신의 방법에 당신을 돕기 위해 만든 샘플 코드

import csv 
filename = './test.txt' 
with open(filename) as f: 
    yourlist = csv.reader(f, delimiter='\t') 
    yourlist = sorted([x for x in yourlist], key=lambda x: int(x[2])) 

print yourlist 

This은 내가 당신과 마주하고 있다고 생각하는 문제를 설명하는 좋은 링크입니다.

관련 문제