파이썬에서 객체 속성을 기준으로 리스트 정렬하기
객체란 무엇인가?
객체는 프로그래밍에서 사용되는 복잡한 자료 구조입니다. 객체는 특성(attribute)과 행동(method)을 가집니다. 예를 들어, ‘자동차’ 객체가 있다면 ‘색깔’, ‘브랜드’ 같은 특성과 ‘달린다’, ‘멈춘다’ 같은 행동을 가질 수 있습니다.
리스트에 있는 객체를 어떻게 정렬할까?
파이썬에서 리스트에 있는 객체를 속성을 기준으로 정렬할 수 있습니다. sorted
함수를 사용하면 쉽게 정렬할 수 있습니다.
sorted 함수와 lambda를 사용하는 방법
1
2
3
4
5
6
7
8
9
10
11
# 객체 정의
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
# 객체 리스트 생성
people = [Person("John", 35), Person("Doe", 25), Person("Jane", 40)]
# age 속성을 기준으로 정렬
sorted_people = sorted(people, key=lambda person: person.age)
여기서 sorted
함수는 리스트를 정렬하는 데 사용됩니다. key
파라미터는 어떤 속성을 기준으로 정렬할지 결정합니다. lambda
는 임시 함수를 만드는데 사용됩니다. lambda person: person.age
는 각 객체의 age
속성을 가져옵니다.
attrgetter를 사용하는 방법
operator
모듈의 attrgetter
함수도 사용할 수 있습니다. attrgetter
를 사용하면 더 명확하고 읽기 쉬운 코드를 작성할 수 있습니다.
1
2
3
4
from operator import attrgetter
# age 속성을 기준으로 정렬
sorted_people = sorted(people, key=attrgetter('age'))
어떤 방법을 사용해야 할까?
lambda
와 attrgetter
두 방법 모두 장단점이 있습니다. lambda
는 더 유연하지만 코드가 복잡해질 수 있습니다. attrgetter
는 코드가 간결하지만, operator
모듈을 가져와야 합니다. 프로젝트의 요구에 따라 적절한 방법을 선택하면 됩니다.
정렬 오류를 피하는 방법
객체의 속성이 없거나 None
일 경우 AttributeError
가 발생할 수 있습니다. 이를 피하려면 정렬 전에 리스트를 필터링하거나 예외 처리를 해주어야 합니다.
이로써 객체의 속성을 기준으로 파이썬 리스트를 정렬하는 방법에 대해 알아보았습니다. 이 정보가 도움이 되길 바랍니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.