[Python] operator.itemgetter, operator.attrgetter로 정렬하기

KangHo Lee's avatar
May 30, 2025
[Python] operator.itemgetter, operator.attrgetter로 정렬하기
파이썬의 operator.itemgetter()operator.attrgetter()정렬(sorted())할 때 많이 사용하는 도구입니다.

operator.itemgetter()

  • 리스트, 튜플, 딕셔너리 등 인덱스로 접근 가능한 데이터에서 값을 기준으로 정렬할 때 사용

📌 예시: 리스트 안에 튜플 정렬

from operator import itemgetter data = [ ('Tom', 80), ('Alice', 95), ('Bob', 70) ] # 두 번째 항목(점수)을 기준으로 정렬 sorted_data = sorted(data, key=itemgetter(1)) print(sorted_data) # [('Bob', 70), ('Tom', 80), ('Alice', 95)]

operator.attrgetter()

  • 객체의 속성(attribute) 을 기준으로 정렬할 때 사용

📌 예시: 클래스 객체 리스트 정렬

from operator import attrgetter class Person: def __init__(self, name, age): self.name = name self.age = age people = [ Person('Tom', 30), Person('Alice', 25), Person('Bob', 35) ] # 나이(age)를 기준으로 정렬 sorted_people = sorted(people, key=attrgetter('age')) for p in sorted_people: print(p.name, p.age)
출력:
Alice 25 Tom 30 Bob 35

✅ 요약 비교

함수
대상
사용 예
itemgetter(n)
인덱스/키
sorted(list_of_tuples, key=itemgetter(1))
attrgetter('attr')
객체 속성
sorted(list_of_objects, key=attrgetter('age'))

🔧 보너스: 다중 정렬도 가능!

# itemgetter itemgetter(1, 0) # 1순위: 인덱스 1, 2순위: 인덱스 0 # attrgetter attrgetter('age', 'name') # 나이 → 이름 순으로 정렬
 
Share article

devleekangho