Python에서 개체 목록 정렬

Vaibhhav Khetarpal 2023년10월10일
  1. list.sort()메소드를 사용하여 Python에서 객체 목록 정렬
  2. sorted()함수를 사용하여 Python에서 객체 목록 정렬
Python에서 개체 목록 정렬

Python 목록은 동종이 아니므로 Python에서 제공하는 다른 데이터 유형과 다릅니다.

목록의 인덱싱은 첫 번째 인덱스로 0부터 시작하여 순차적으로 수행됩니다. 목록의 모든 요소는 목록에서 중복이 허용되기 때문에 명확한 위치를 갖습니다.

이 튜토리얼에서는 Python에서 객체 목록을 정렬하는 다양한 방법을 소개합니다.

list.sort()메소드를 사용하여 Python에서 객체 목록 정렬

list.sort()메소드는 모든 목록 요소를 오름차순 또는 내림차순으로 정렬합니다.

여기에는keyreverse의 두 가지 선택적 매개 변수가 있습니다. key매개 변수는 이름에서 알 수 있듯이 정렬 프로세스의 키 역할을합니다. reverse매개 변수는 정렬 순서를 결정하는 데 사용됩니다. reverse값이True이면 역 / 내림차순으로 정렬됩니다.

그러나이 기능은 앞서 언급 한 선택적 매개 변수를 사용하지 않아도 잘 작동합니다.

다음 코드는list.sort()메소드를 사용하여 Python에서 객체 목록을 정렬합니다.

class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]
    # sort list by `name` in the natural order
    emps.sort(key=lambda x: x.name)
    print(emps)

    # sort list by `name` in reverse order
    emps.sort(key=lambda x: x.name, reverse=True)
    print(emps)

출력:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
[{Nik, Banking, 21}, {Lucien, Finance, 19}, {Elijah, IT, 20}]

key매개 변수의 값을 생성하기 위해operator.attrgetter()를 사용할 수 있습니다.

attrgetter()operator 모듈에서 가져 오며 피연산자에서 속성을 가져 오는 호출 가능한 객체를 반환하는 데 사용됩니다.

다음 코드는list.sort()메소드와operator.attrgetter()를 사용하여 Python에서 객체 목록을 정렬합니다.

from operator import attrgetter


class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]
    # sort list by name in the natural order using 'attrgetter()'
    emps.sort(key=attrgetter("name"))

    print(emps)

출력:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]

sorted()함수를 사용하여 Python에서 객체 목록 정렬

Python은list.sort()함수의 대안으로 사용할 수있는 내장sorted()함수를 제공합니다.

list.sort()는 특정 값을 반환하지 않고 원래 목록을 변경하지만sorted()함수는 원래 목록을 수정하지 않고 정렬 된 목록을 반환합니다.

sorted()함수는 선택적 매개 변수로reverse만 포함합니다.

다음 코드는sorted()함수를 사용하여 Python에서 객체 목록을 정렬합니다.

class BankEMP:
    def __init__(self, name, dept, age):
        self.name = name
        self.dept = dept
        self.age = age

    def __repr__(self):
        return "{" + self.name + ", " + self.dept + ", " + str(self.age) + "}"


if __name__ == "__main__":

    emps = [
        BankEMP("Elijah", "IT", 20),
        BankEMP("Nik", "Banking", 21),
        BankEMP("Lucien", "Finance", 19),
    ]

    # sort list in natural order of name using sorted() function
    sort1 = sorted(emps, key=lambda x: x.name)
    print(sort1)

출력:

[{Elijah, IT, 20}, {Lucien, Finance, 19}, {Nik, Banking, 21}]
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

관련 문장 - Python List