더북(TheBook)

때로는 여러 기준을 사용해 정렬해야 할 수도 있다. 예를 들어, 전동 공구 정보가 들어 있는 리스트가 있는데 weight로 먼저 정렬한 다음에 name으로 정렬하고 싶다면 어떻게 해야 할까?

power_tools = [
    Tool('드릴', 4),
    Tool('원형 톱', 5),
    Tool('착암기', 40),
    Tool('연마기', 4),
]

파이썬에서 가장 쉬운 해법은 tuple 타입을 쓰는 것이다. 튜플은 임의의 파이썬 값을 넣을 수 있는 불변 값이다. 튜플은 기본적으로 비교 가능하며 자연스러운 순서가 정해져 있다. 이는 sort에 필요한 __lt__ 정의가 들어 있다는 뜻이다. 이 특별 비교 메서드는 튜플의 각 위치를 이터레이션하면서 각 인덱스에 해당하는 원소를 한 번에 하나씩 비교하는 방식으로 구현돼 있다. 다음은 어떤 도구가 다른 도구보다 무거울 때 어떤 일이 벌어지는지 보여준다..

saw = (5, '원형 톱')
jackhammer = (40, '착암기')
assert not (jackhammer < saw)   # 예상한 대로 결과가 나온다
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.