inblog logo
|
devleekangho
    파이썬

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

    KangHo Lee's avatar
    KangHo Lee
    May 30, 2025
    [Python] operator.itemgetter, operator.attrgetter로 정렬하기
    Contents
    ✅ 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
    Contents
    ✅ operator.itemgetter()✅ operator.attrgetter()✅ 요약 비교

    devleekangho

    RSS·Powered by Inblog