콘텐츠로 건너뛰기

파이썬 리스트 정렬, 딕셔너리, 튜플 정렬도 함께 보기

    들어가며

    리스트는 파이썬에서 자주 사용되는 데이터 구조로, 다양한 상황에서 정렬이 필요합니다. 파이썬은 내장된 기능을 통해 리스트를 쉽게 정렬할 수 있는 여러 방법을 제공하고 있는데요. 이 글에서는 다양한 상황에서 사용할 수 있는 리스트 정렬 방법에 대해 알아보겠습니다.

    1. 기본 정렬

    가장 간단한 정렬 방법은 sort() 메서드와 sorted() 함수를 사용하는 것입니다. 이 두 가지 방법은 기본적으로 오름차순으로 정렬합니다.

    sort() 메서드

    sort() 메서드는 리스트 자체를 정렬하며, 리스트를 수정합니다.

    numbers = [4, 2, 9, 1, 5, 6]
    numbers.sort()
    print(numbers)  # [1, 2, 4, 5, 6, 9]

    sorted() 함수

    sorted() 함수는 리스트를 정렬한 새로운 리스트를 반환하며, 원본 리스트는 변경되지 않습니다.

    numbers = [4, 2, 9, 1, 5, 6]
    sorted_numbers = sorted(numbers)
    print(sorted_numbers)  # [1, 2, 4, 5, 6, 9]
    print(numbers)         # [4, 2, 9, 1, 5, 6]

    2. 내림차순 정렬

    리스트를 내림차순으로 정렬하려면 sort() 메서드와 sorted() 함수에 reverse=True 매개변수를 사용하면 됩니다.

    sort() 메서드

    numbers = [4, 2, 9, 1, 5, 6]
    numbers.sort(reverse=True)
    print(numbers)  # [9, 6, 5, 4, 2, 1]

    sorted() 함수

    numbers = [4, 2, 9, 1, 5, 6]
    sorted_numbers = sorted(numbers, reverse=True)
    print(sorted_numbers)  # [9, 6, 5, 4, 2, 1]

    3. 키를 사용한 정렬

    리스트의 요소가 복잡한 구조(예: 튜플, 딕셔너리 등)를 가지는 경우, 특정 키를 기준으로 정렬할 수 있습니다. 이 때 key 매개변수를 사용합니다.

    튜플의 특정 요소를 기준으로 정렬

    students = [("John", 25), ("Jane", 22), ("Dave", 27)]
    students.sort(key=lambda student: student[1])
    print(students)  # [('Jane', 22), ('John', 25), ('Dave', 27)]

    딕셔너리의 값 기준 정렬

    students = [{"name": "John", "age": 25}, {"name": "Jane", "age": 22}, {"name": "Dave", "age": 27}]
    students.sort(key=lambda student: student["age"])
    print(students)  # [{'name': 'Jane', 'age': 22}, {'name': 'John', 'age': 25}, {'name': 'Dave', 'age': 27}]

    4. 사용자 정의 정렬 함수

    복잡한 정렬 기준이 필요한 경우, 사용자 정의 함수를 key 매개변수로 사용할 수 있습니다.

    사용자 정의 함수 사용 예제

    def custom_sort(student):
        return student[1], student[0]  # 나이 우선, 이름 차선
    
    students = [("John", 25), ("Jane", 22), ("Dave", 27)]
    students.sort(key=custom_sort)
    print(students)  # [('Jane', 22), ('John', 25), ('Dave', 27)]

    5. 다중 기준 정렬

    여러 기준으로 정렬해야 하는 경우, 튜플을 반환하는 key 함수를 사용하면 됩니다. 첫 번째 요소를 기준으로 정렬하고, 두 번째 요소로 차순위를 정합니다.

    students = [("John", "A"), ("Jane", "B"), ("Dave", "A"), ("Zack", "B")]
    students.sort(key=lambda student: (student[1], student[0]))
    print(students)  # [('John', 'A'), ('Dave', 'A'), ('Jane', 'B'), ('Zack', 'B')]

    6. 대소문자 구분 없이 정렬

    문자열 리스트를 정렬할 때 대소문자를 구분하지 않도록 하려면 str.lowerkey로 사용할 수 있습니다.

    words = ["banana", "Apple", "orange", "apple"]
    words.sort(key=str.lower)
    print(words)  # ['Apple', 'apple', 'banana', 'orange']

    마무리

    파이썬은 다양한 상황에서 리스트를 정렬할 수 있는 강력하고 유연한 기능을 제공합니다. sort() 메서드와 sorted() 함수를 기본으로, key 매개변수를 사용한 사용자 정의 정렬, 다중 기준 정렬, 대소문자 구분 없는 정렬 등을 통해 원하는 형태로 데이터를 정렬할 수 있습니다. 이를 잘 활용한다면 데이터 처리와 분석 작업이 훨씬 수월해질 것입니다.