sort를 사용해 학번을 기준으로 리스트를 정렬 하려는데 정렬이 안되고 입력값 순으로 나오는데 어떻게 해야하나요?
조회수 502회
elif menu == 4:
sorted_list = sorted(student_list, key=lambda hakbun:student.hakbun)
print_student(sorted_list)
이 코드를 실행하면 sorted_list가 학번순으로 정렬되서 출력되어야될것같은데 입력순으로 출력이 됩니다. 해결방법 아시는 분 있으시면 알려주시면 감사하겠습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
2 답변
-
앞으로는 이런 실수 하지 마시라고 자세히 보여드리겠습니다
sorted_list = sorted(student_list, key=lambda hakbun:student.hakbun)
sorted_list = sorted(student_list, key=lambda student: student.hakbun)
위의 코드는 직접 작성하신거고 두번째 코드는 다른 분께서 답변주신겁니다
잘 모르시겠다면 다음 코드를 보세요
sorted(student_list, key=lambda hakbun:student.hakbun)
sorted(student_list, key=lambda student: student.hakbun)
그래도 잘 모르시겠다면 다음 코드를 보세요
key=lambda hakbun:student.hakbun
key=lambda student: student.hakbun
여기까지 왔으면 뭐가 잘못됐는지 아시리라 믿겠습니다.
문제가 생겼고 그게 어디서 발생했는지까지 찾았다면 그 부분에서 뭐가 문제인지 주의깊게 살펴보는 버릇을 들이시길 바랍니다.
- 일단 답변 감사드립니다. 저도 저것을 확인했습니다. 그러나 두가지 방법 모두 순서대로 정렬이 안되서 한번더 문의드렸습니다. 예를 들면 입력을 학번1, 학번3, 학번2로 하면 학번1, 학번 2, 학번3의 순서로 정렬되게 하고싶은데 입력 순서대로만 나와서 문의드린것이였습니다. 질문을 애매하게 하였다면 죄송합니다. 알 수 없는 사용자 2020.4.23 14:13
- 예시로 넣었던 학번값이 어떻게 되나요? HIAOAIH 2020.4.23 14:25
- 다음부터는 질문을 최대한 구체적으로 해야겠습니다. 예시로 학번 입력칸에 1,3,2순서대로 넣었습니다. 그리고 출력값은 1,3,2순서로 나왔습니다. 알 수 없는 사용자 2020.4.23 14:33
- 올려주신 코드에 말씀하신 1, 3, 2로 테스트해봤는데 정렬된 상태로 잘 나옵니다. student_list가 아닌 sorted_list를 출력하신거 맞죠? HIAOAIH 2020.4.23 14:42
- student_list로 했습니다. 정렬 전 리스트로 출력을 받고 있었네요. 그걸 못 찾아서 그랬습니다. 정말로 알려주셔서 감사합니다. 알 수 없는 사용자 2020.4.23 14:46
- 위에서 적었듯이 "문제가 생겼고 그게 어디서 발생했는지까지 찾았다면 그 부분에서 뭐가 문제인지 주의깊게 살펴보는 버릇을 들이시길 바랍니다." 다음부턴 더 잘 하실 수 있으실거예요 HIAOAIH 2020.4.23 14:48
- 조언 감사드립니다. 알 수 없는 사용자 2020.4.23 14:50
-
여러 사람 속 터지는 상황인데요. 🤣
아래 코드 던지고 제 턴을 마칩니다:class Student(): def __init__(self, name, hakbun, major, kor, eng, math): self.name = name self.hakbun = hakbun self.kor = kor self.eng = eng self.math = math def Insert_student(name, hakbun, major, kor, eng, math): student = Student(name,hakbun, major, kor, eng, math) return student student_list = [] student = Insert_student('야', '90198', '왜', 100, 80, 90) student_list.append(student) student_list.append(Insert_student('야2', '70101', '왜2', 100, 80, 90)) student_list.append(Insert_student('야3', '13146', '왜3', 100, 80, 90)) student_list.append(Insert_student('야4', '40001', '왜4', 100, 80, 90)) sorted_list = sorted(student_list, key=lambda student: student.hakbun) unsorted_list = sorted(student_list, key=lambda hakbun: student.hakbun) print('\n정렬 전 원본:') for ele in student_list: print(ele.hakbun) print('\n정렬 후:') for ele in sorted_list: print(ele.hakbun) print('\n잘못된 정렬:') for ele in unsorted_list: print(ele.hakbun)
- 해결됐다고 하네요 ㅠㅠ 수고하셨습니다 HIAOAIH 2020.4.23 14:47
- 편집요청빌런님 출력후값을 제가 잘못받았었네요. 리스트 정렬에 꽃혀서 저걸 못 봤었습니다. 정말 감사드립니다. 알 수 없는 사용자 2020.4.23 14:48
- 😂😂😂 편집요청빌런 2020.4.23 14:57
댓글 입력