Python 라이브러리 - operator.itemgetter

공식 문서 링크

source code 링크

operator.itemgetter

operator.itemgetter는 주로 sorted와 같은 함수의 key 매개변수에 적용하여 다양한 기준으로 정렬할 수 있도록 하는 모듈입니다.

예시

이름, 나이, 성적이 있는 학생 데이터를 기준에 맞게 정렬하는 프로그램입니다.

tuple(나이 기준)

from operator import itemgetter


students = [
    ("kim", 23, "A"),
    ("park", 12, "C"),
    ("lee", 19, "B"),
]

result = sorted(students, key=itemgetter(1))
print(result)       # [('park', 12, 'C'), ('lee', 19, 'B'), ('kim', 23, 'A')]

itemgetter(1)은 students의 아이템인 튜플의 2번째 요소를 기준으로 정렬하겠다는 의미입니다.

dict(점수 기준)

students = [
    {"name": "kim", "age": "23", "grade": "A"},
    {"name": "park", "age": "12", "grade": "C"},
    {"name": "lee", "age": "19", "grade": "B"},
]

result = sorted(students, key=itemgetter('grade'))
print(result)
# [{'name': 'kim', 'age': '23', 'grade': 'A'}, {'name': 'lee', 'age': '19', 'grade': 'B'}, {'name': 'park', 'age': '12', 'grade': 'C'}]

딕셔너리일 때는 itemgetter('grade')처럼 딕셔너리의 키를 사용해야 합니다.

object

students 리스트의 요소가 Student 클래스의 객체라면 attrgetter()를 적용해 정렬해야 합니다.

from operator import attrgetter

class Student:
    def __init__(self, name: str, age: int, grade: str) -> None:
        self.name = name
        self.age = age
        self.grade = grade

students = [
    Student('kim', 23, 'A'),
    Student('park', 12, 'C'),
    Student('lee', 19, 'B'),
]

result = sorted(students, key=attrgetter('age'))

print(result[0].name)   # park
print(result[2].grade)  # A

 

 

 

'Python > Python' 카테고리의 다른 글

Python 라이브러리 - functools  (0) 2023.05.24
Python 라이브러리 - itertools  (0) 2023.05.20
Python 라이브러리 - statistics  (0) 2023.05.17
Python 라이브러리 - random  (0) 2023.05.17
Python 라이브러리 - fractions  (0) 2023.05.17