Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python itemgetter를 활용해 딕셔너리 리스트를 값 기준으로 정렬하는 방법

파이썬에서 딕셔너리로 이루어진 리스트를 특정 값(키)을 기준으로 정렬해야 하는 경우가 자주 있습니다. 이럴 때 operator 모듈의 itemgetter를 사용하면 간결하고 효율적으로 정렬할 수 있습니다.

itemgettersorted() 함수의 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) 함수를 사용하는 것보다 실행 속도가 약간 더 빠르고 코드가 간결해지는 장점이 있습니다. 다만 람다 함수를 사용하면 더 복잡한 정렬 로직도 유연하게 구현할 수 있으므로, 상황에 맞게 선택하여 사용하는 것이 좋습니다.