본문 바로가기
IT 이것저것/파이썬python

파이썬python 정렬을 위한 sorted 함수!

by KaNonx카논 2017. 6. 12.
반응형

파이썬python 정렬을 위한 sorted 함수!

 

계속 잘 따라오고 계신지요?!

 

오늘은 람다 함수에 이어서 정렬을 위한 sorted 함수에 대해 배워볼까 합니다. 

 

 

2017/06/08 - 파이썬python 람다lambda 함수라는건?

2017/06/04 - 파이썬python 성적 처리 프로그램을 짜자! - 학생 데이터 입력2

 

 

정렬을 위한 함수를 배우는 이유는 당연히 알고 계시겠지요?

 

학생들의 성적을 처리한 후에 등수별로 오름차순으로 정렬하기 위해서입니다!

 

sort란 정렬하다라는 뜻이며 데이터를 정렬할 때 쓰는 함수이지요~!

 

쓰는 방법은 간단합니다.

 

 ex) data = [ 145, 22, 55, 66, 765, 23, 1]

 

일때

 

 sortde_data = sorted(data)

 

한 줄을 추가해 주면

 

 sortde_data 를 입력했을 시

 

[1, 22, 23, 55, 66, 145, 765]

 

로 정렬되어서 나오는 겁니다.

 

어때요, 정말 쉽죠?!

 

하나 더,

 

 

 sortde_data = sorted(data, reverse=True)

 

라고 reverse=True를 덧붙여서 입력한다면

 

 

 sortde_data 는


[765, 145, 66, 55, 23, 22, 1]

 

이라는 내림차순으로 정렬이 됩니다.

 

 

 

 def main():
    students = [{'id' : '1', 'name' : 'kim', 'kor' : 60, 'eng' : 30, 'math' : 80, 'total' : 0, 'avg' : 0.0, 'ranking' : 0},
                {'id' : '2', 'name' : 'non', 'kor' : 50, 'eng' : 40, 'math' : 70, 'total' : 0, 'avg' : 0.0, 'ranking' : 0},
                {'id' : '3', 'name' : 'as', 'kor' : 90, 'eng' : 90, 'math' : 100, 'total' : 0, 'avg' : 0.0, 'ranking' : 0}]

    for student in students:
        student['total'] = student['kor'] + student['eng'] + student['math']
        student['avg'] = student['total'] / 3   
       
    for student in students:
        print(student)

 

자아 그렇다면 지금까지 짰었던 학생 성적 입력 프로그램에 대입시키면 어떻게 될까요?!

 

 

 def main():
    students = [{'id' : '1', 'name' : 'kim', 'kor' : 60, 'eng' : 30, 'math' : 80, 'total' : 0, 'avg' : 0.0, 'ranking' : 0},
                {'id' : '2', 'name' : 'non', 'kor' : 50, 'eng' : 40, 'math' : 70, 'total' : 0, 'avg' : 0.0, 'ranking' : 0},
                {'id' : '3', 'name' : 'as', 'kor' : 90, 'eng' : 90, 'math' : 100, 'total' : 0, 'avg' : 0.0, 'ranking' : 0}]

    for student in students:
        student['total'] = student['kor'] + student['eng'] + student['math']
        student['avg'] = student['total'] / 3   
          
    sorted_students = sorted(students, key = lambda x : x['total'], reverse=True)

    count = 1
    for student in sorted_students:
        student['ranking'] = count
        count = count + 1

       
    for student in sorted_students:
        print(student) 
    

 

어느부분이 달라졌는지 아시겠죠?!

 

총점의 크기가 높은 순으로 정렬하게 만들고

 

동시에 count를 써서 ranking 도 출력되게 만들었습니다.

 

이정도면, 이제 거의 완성된거나 마찬가지지요~

 

그럼 다음시간에는 파일로 이 프로그램을 출력하는 방법에 대해서 알아보겠습니다!

 

 

 

 

-

 

반응형

댓글