파이썬에서 딕셔너리로 이루어진 리스트를 특정 값(키)을 기준으로 정렬해야 하는 경우가 자주 있습니다. 이럴 때 operator 모듈의 itemgetter를 사용하면 간결하고 효율적으로 정렬할 수 있습니다.
itemgetter는 sorted() 함수의 key 인자와 함께 사용되며, 하나의 키뿐만 아니라 여러 개의 키를 동시에 지정하거나 내림차순 정렬도 손쉽게 구현할 수 있습니다.
예제 코드
from operator import itemgetter
my_list = [{ "name" : "Will", "age" : 56},
{ "name" : "Rob", "age" : 20 },
{ "name" : "Mark" , "age" : 34 },
{ "name" : "John" , "age" : 24 }]
print("나이(age)를 기준으로 정렬한 리스트 : ")
print(sorted(my_list, key=itemgetter('age')))
print("나이(age)와 이름(name)을 기준으로 정렬한 리스트 : ")
print(sorted(my_list, key=itemgetter('age', 'name')))
print("나이(age)를 기준으로 내림차순 정렬한 리스트 : ")
print(sorted(my_list, key=itemgetter('age'), reverse=True))실행 결과
나이(age)를 기준으로 정렬한 리스트 :
[{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]
나이(age)와 이름(name)을 기준으로 정렬한 리스트 :
[{'name': 'Rob', 'age': 20}, {'name': 'John', 'age': 24}, {'name': 'Mark', 'age': 34}, {'name': 'Will', 'age': 56}]
나이(age)를 기준으로 내림차순 정렬한 리스트 :
[{'name': 'Will', 'age': 56}, {'name': 'Mark', 'age': 34}, {'name': 'John', 'age': 24}, {'name': 'Rob', 'age': 20}]코드 설명
operator모듈에서itemgetter를 임포트합니다.딕셔너리 요소들로 구성된 리스트를 정의합니다.
sorted()메서드를 호출하고,key인자에itemgetter('age')를 지정하여 나이를 기준으로 오름차순 정렬합니다.itemgetter에 두 개의 매개변수('age','name')를 전달하면, 첫 번째 키 값이 같을 경우 두 번째 키 값을 기준으로 추가 정렬됩니다.reverse=True옵션을 사용하면 내림차순으로 정렬할 수 있습니다.정렬된 결과는 콘솔에 출력됩니다.
참고 사항
itemgetter는 람다(lambda) 함수를 사용하는 것보다 실행 속도가 약간 더 빠르고 코드가 간결해지는 장점이 있습니다. 다만 람다 함수를 사용하면 더 복잡한 정렬 로직도 유연하게 구현할 수 있으므로, 상황에 맞게 선택하여 사용하는 것이 좋습니다.