딕셔너리를 정렬하는 방법 중에 파이썬의 내장 함수은 sorted()
와 operator
라이브러리의 itemgetter()
를 이용하는 방법이다.
sorted(iterable, *, key=None, reverse=False)
iterable로 부터 새로운 정렬된 리스트를 만드는 sorted() 내장 함수
https://docs.python.org/ko/3/howto/sorting.html
list
내장 함수은 list.sort()
는 기존의 리스트를 정렬함으로써 값이 변경되는데, sorted()
는 정렬된 새로운 리스트를 반환한다.
기본적으로 오름차순 정렬이며, reverse=True
로 키워드 인자를 주면 내림차순 정렬도 가능하다.
또한, 딕셔너리를 정렬하기 위해서는 key
키워드 인자를 활용해야 한다. 값으로는 각 리스트 요소에 대해 호출할 함수를 지정할 수 있다.
>>> student_tuples = [
('john', 'A', 15),
('jane', 'B', 12),
('dave', 'B', 10),
]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
lambda
를 사용하는 것보다 더 빠르고 쉬운 방법은 operator
모듈을 사용하는 것이다.
operator
파이썬의 내장 연산자에 해당하는 효율적인 함수 집합을 내보냅니다. 또한,
operator
모듈은 일반화된 어트리뷰트와 항목 조회를 위한 도구도 정의합니다. 이것은map()
,sorted()
,itertools.groupby()
또는 함수 인자를 기대하는 다른 함수의 인자로 사용될 고속 필드 추출기를 만드는 데 유용합니다.
https://docs.python.org/ko/3/library/operator.html#module-operator
operator
모듈의 itemgetter()
와 attrgetter()
는 item을 꺼내는 callable object를 반환한다.
callable object는 python에서 객체(class)내에 call()이 정의되어 호출 가능한 객체다.