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 |