더북(TheBook)

그럼 이 코드를 다음과 같이 실행해 보자. 굵은 글씨가 사용자가 입력한 값이다.

Enter next name: John
Enter next name: Paul
Enter next name: George
Enter next name: Ringo
Enter next name: Brian
Enter next name:
Here is the sorted list:
Brian George John Paul Ringo

sort 메서드는 선택적으로 입력할 수 있는 인수가 있다. 첫 번째 인수는 key 인수로, 기본값으로는 None이 설정되어 있다. 이 인수에는 특이하게도 함수(콜러블(callable))를 넣을 수 있는데, 이 함수는 각 값을 인수로 하여 연산 처리를 한 후 값을 반환한다. 이렇게 반환된 각 값이 정렬에서 사용하는 기준이 되며, 이를 key로 부르는 것이다. 예를 들어 3개의 항목을 가진 리스트에서 key에 설정한 함수로 인해 생성된 키 값이 15, 1, 7이면 리스트는 1, 7, 15 순으로 정렬될 것이다.

또 하나의 예를 들어 보자. 만약 문자열 리스트를 정렬하려고 하는데, 대·소문자를 구분하지 않겠다고 해 보자. 이를 구현하는 쉬운 방법은 모든 문자를 대문자 혹은 소문자로 바꾸거나 casefold 메서드를 사용하여 값을 변경하는 것이다(casefold 메서드는 모든 문자를 소문자로 바꾼다).

def ignore_case(s):
    return s.casefold()

a_list = ['john', 'paul', 'George', 'brian', 'Ringo']
b_list = a_list[:]
a_list.sort()
b_list.sort(key=ignore_case)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.