sort를 사용해 학번을 기준으로 리스트를 정렬 하려는데 정렬이 안되고 입력값 순으로 나오는데 어떻게 해야하나요?

조회수 502회
elif menu == 4:
    sorted_list = sorted(student_list, key=lambda hakbun:student.hakbun)
    print_student(sorted_list)

이 코드를 실행하면 sorted_list가 학번순으로 정렬되서 출력되어야될것같은데 입력순으로 출력이 됩니다. 해결방법 아시는 분 있으시면 알려주시면 감사하겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • sorted(student_list, key=lambda student: student.hakbun) 이렇게 하라고 전 글에서 답변 드렸는데, 잘 보세요. 편집요청빌런 2020.4.23 13:01
  • 왜 똑같은 질문 다시 올리는 겁니까? 안된다면 어떤 걸 기대했는데, 어떻게 안되더라 라는 설명을 붙여서 질문을 하던가. 질문 좀 제대로 좀 해요. nowp 2020.4.23 13:45
  • 일단 댓글 감사드립니다. 저도 저것을 확인했습니다. 그러나 두가지 방법 모두 순서대로 정렬이 안되서 한번더 문의드렸습니다. 예를 들면 입력을 학번1, 학번3, 학번2로 하면 학번1, 학번 2, 학번3의 순서로 정렬되게 하고싶은데 입력 순서대로만 나와서 문의드린것이였습니다. 질문을 애매하게 하였다면 죄송합니다. 알 수 없는 사용자 2020.4.23 14:14
  • hakbun: student.hakbun 을 student: student.hakbun 로 고친게 맞나요? 저도 코드 돌려보고 답변 드리는거라서요. 편집요청빌런 2020.4.23 14:19
  • 무엇을 했고, 어떤 걸 기대했었는데, 어떻게 다르게 나오더라는 걸 질문에 같이 써줘야지요. 그냥 자기가 원하는 것만 달랑 써놓으면, 답변하는 사람은 수많은 가능성을 다 탐색하고 답을 해줘야 하잖아요? 안 그렇습니까? 모른다고 뭐라고 하는 게 아니고, 질문을 최대한 구체적으로 하라는 말입니다. nowp 2020.4.23 14:21
  • # ----- 데이터 정렬 ----- elif menu == 4: sorted_list = sorted(student_list, key=lambda student: student.hakbun) print_student(student_list) <- 이렇게 돌렸습니다. 알 수 없는 사용자 2020.4.23 14:24
  • 정렬 결과는 sorted_list에 있는데 출력은 정렬 전 리스트로 하고 있네요... 😑 편집요청빌런 2020.4.23 14:33
  • 대원님 먼저 댓글에 얘기하신데로 제가 부주의 했습니다. 죄송합니다. 다음부터는 질문을 최대한 구체적으로 해야겠습니다. 아 그런가요 다시 해보겠습니다. 편집요청빌런님꼐도 죄송하고 감사합니다. 알 수 없는 사용자 2020.4.23 14:39
  • @꿈 : 말이 좀 심했습니다. 개인적인 감정은 없었다는 점 말씀드리고 싶습니다. 화이팅하셔서, 나중에는 저랑 다른 분들에게 한수 가르쳐줄 수 있기를 바랍니다. nowp 2020.4.23 15:27

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)