파이썬의
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