backend/Django&Python

[Python] value값으로 정렬. operator의 itemgetter!

findTheValue 2021. 7. 30. 17:55

operator 라이브러리의 itemgetter 메서드는 딕셔너리json파일의 키값이 아닌 벨류값으로 정렬을 수행하게 해준다.

lambda식으로 표현할 수도 있다.

 

students = [
    ("jane", 22, 'A'),
    ("dave", 32, 'B'),
    ("sally", 17, 'B'),
]

result = sorted(students, key=itemgetter(1))

[('sally', 17, 'B'), ('jane', 22, 'A'), ('dave', 32, 'B')]
인덱스로 소트.

 

students = [
    {"name": "jane", "age": 22, "grade": 'A'},
    {"name": "dave", "age": 32, "grade": 'B'},
    {"name": "sally", "age": 17, "grade": 'B'},
]

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

[{'name': 'sally', 'age': 17, 'grade': 'B'}, {'name': 'jane', 'age': 22, 'grade': 'A'}, {'name': 'dave', 'age': 32, 'grade': 'B'}]
# age기준으로 sort
from operator import attrgetter

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


students = [
    Student('jane', 22, 'A'),
    Student('dave', 32, 'B'),
    Student('sally', 17, 'B'),
]

# 객체의 경우 매개변수명으로 소트
result = sorted(students, key=attrgetter('age'))