Notice
Recent Posts
Recent Comments
05-18 01:37
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Byeol Lo

operator 모듈의 itemgetter, attrgetter 사용하기 본문

Programming Language/Python

operator 모듈의 itemgetter, attrgetter 사용하기

알 수 없는 사용자 2022. 6. 16. 16:35
from operator import itemgetter, attrgetter

student_tuples = [
    ('수학', 105),
    ('영어', 140),
    ('과학', 133),
    ('국어', 100)
]

class Student :
    def __init__(self, name, grade, age) :
        self.name = name
        self.grade = grade
        self.age = age
    
    def __repr__(self) :
        return repr((self.name, self.grade, self.age))

student_objects = [
    Student('홍길동', "A+", 22),
    Student('아이유', "A0", 20),
    Student('김구', "A+", 21),
    Student('야스오', "C+", 20)
]


sorted_student_tuples = sorted(student_tuples, key=lambda student: student[1])
itemgetter_student_tuples = sorted(student_tuples, key=itemgetter(1))

print(sorted_student_tuples == itemgetter_student_tuples)

sorted_student_objects = sorted(student_objects, key=lambda student: (student.grade, student.age))
attrgetter_student_objects = sorted(student_objects, key=attrgetter("grade", "age"))

print(sorted_student_objects == attrgetter_student_objects)


def multisort(xs, specs) :
    for key, reverse in reversed(specs) :
        xs.sort(key=attrgetter(key), reverse=reverse)
    return xs

print(multisort(list(student_objects), (('grade', True), ('age', False))))

 

Comments