2017-11-03 8 views
0

그래서 현재 HackerRank에 코드를 작성하는 방법을 배우고 있으며 두 번째로 낮은 등급의 학생 이름을 반환하는 것이 문제입니다. 이것은 하위 목록의 일부로 name (type string) 및 score (float)가있는 중첩 목록입니다. 따라서 예는 다음과 같습니다.float가있는 중첩 목록을 목록의 요소로 정렬하는 방법은 무엇입니까?

students = [ 
    ['Harry', 37.21], 
    ['Berry', 37.21], 
    ['Tina', 37.2], 
    ['Akriti', 41], 
    ['Harsh', 39] 
] 

위의 목록에있는 자료는 'Harry'및 'Berry'를 반환합니다. 컴파일러에 주어진 코드는

if __name__ == '__main__': 
    for _ in range(int(input())): 
     name = input() 
     score = float(input())` 

내가 주어진 있었는지 후에 추가 한 코드는 students.append([name, score]) 내부 루프 (if __name__ == '__main__': 후) students = []했다. 마지막으로 나는 두 번째로 낮은 성적을 가진 학생을 인쇄하려고하지만 실제로 그것에 대해 어떻게해야하는지 잘 모르고있다. 어떤 제안? (나는 정렬 된 함수를 사용하여 여러 줄의 코드를 시도했지만 항상 어떤 종류의 오류가 발생했습니다. 예를 들어 floatstr 또는 float의 인스턴스간에 지원되지 않는 객체는 반복 가능하지 않거나 그 반대의 경우도 마찬가지입니다. 그리고 죄송합니다. 여러 코드 줄을 시도 했으므로 어떤 코드가 어떤 코드를 던지 었는지 기억하지 못했습니다.) 먼저 미안하지만 질문을했습니다. 묻는 질문과 비슷한 몇 가지 질문을 찾아 보았지만 여전히 할 수 없었습니다. 정말 답을 찾는다. 둘째, 내가 불평하거나 불평하는 것처럼 보이면 미안하지만 지금 당분간이 문제에 갇혀 있고 우울 해지고 있습니다. 몇 줄의 코드에 갇히면 프로그램 가치있는 코드. 셋째, 도움을 주셔서 감사합니다.

답변

0
print(sorted(students, key = lambda x : x[1])) 
1

당신은 내 목록의 각의 두 번째 요소를 사용하여 정렬을 알려주는 key으로 sort() 기능을 사용할 수 있습니다.

students = [['Harry', 37.21], ['Berry', 37.21], ['Tina', 37.2], ['Akriti', 41], ['Harsh', 39]] 
students.sort(key = lambda x : x[1]) 

# students = [['Tina', 37.2], ['Harry', 37.21], ['Berry', 37.21], ['Harsh', 39], ['Akriti', 41]] 
print(students[1]) 

출력 :

['Harry', 37.21]