2014-11-24 7 views
0

나는 txt 파일을 읽음으로써 내가 만든 2D 목록을 가지고 있습니다. 5.2D 목록 정렬

sort = list(sorted(sort,key=lambda x: x[5],reverse=True)) 
for i in range(0, len(sort)): 
      print("Name:",sort[i][0],"\tscore1:",sort[i][1],"\tscore2:",sort[i][2],"\tscore3:",sort[i][3], "\tHighest:",sort[i][5]) 

코드는이 목록의 맨 아래에 (만 2 자리 숫자의 10 넣어 어떤 이유로 그에서 떨어져 작동하는 것 같다 위치 - 나는 가장 높은 값을 기준으로 목록을 정렬하려면이 코드를 작성했습니다 . 오히려 상단보다 단순히 각리스트의 말미에 첨부 된 후, 가장 높은 수를 달성하고 최대 함수를 사용하여이

명 :. B의 score1 6 score2 1 score3 3 최고 6

이름 : Z 점수 1 : 4 점수 2 : 4 점수 3 : 5 최고 : 5

이름 : 닐 score1 : 4 score2 : 1 score3 : 3 최고 : 4

이름 : 프레드 score1 : 10 score2 : 0 score3 : 0 최고 : 10

어떤 도움 감사합니다. 문제는 거의 확실하게 당신이 실제로 수 있지만, 문자열을하지 않아도됩니다

+0

입력 목록을 표시 할 수 있습니까? –

답변

0

. *

문자열은 비교 전적으로 즉, 알파벳 순서, 문자 단위, 당신이 단어를 정렬하는 것과 동일한 방법입니다 사전. 숫자는 특별한 것이 아닙니다. 다른 캐릭터와 마찬가지로 취급됩니다. 따라서 첫 번째 문자열의 첫 번째 문자 "1"이 두 번째 문자의 첫 번째 문자열 "2"보다 작기 때문에 "10""2"보다 작습니다.

먼저 정수 (float 또는 다른 숫자 유형)를 저장하는 것이 좋습니다.

그러나 문자열을 저장하고 정수 값을 기준으로 정렬하려면 int을 정렬 키로 사용할 수 있습니다. 또는 귀하의 경우 lambda x: x[5] 대신 lambda x: int(x[5])을 입력하십시오. 미래의 디버깅을위한


* : 당신은 그냥 print 값,이 모호 할 수있을 때 그것이 무엇인지. 숫자 2과 문자열 "2"은 모두 2으로 인쇄됩니다. 이와 같은 문제를 발견하려면 print(repr(x)) 및/또는 print(type(x))을 일시적으로 사용할 수 있습니다. (당신은. 각각 2'2'intstr을 얻을 것)에도 repr 여전히 가끔 수 있습니다 모호한 - 그러나 이것은 대부분 단지는 일반적으로 문제가되지 않는 경우에 발생합니다. 대개.

+1

눈부신. 설명 해줘서 고마워. 귀하의 방법을 시도하고 문제를 실현 후 나는 정렬하기 전에 int를 int로 변환하기로 결정했습니다. – learningpython

0

이것은 x[5]이 문자열 인 것처럼 보입니다. int(x[5])으로 전화하여 int으로 변환해야합니다.

+0

많은 감사. 이 문제를 해결하기 위해 정렬을 완료하기 전에 최대 값을 int로 변환했습니다. – learningpython