이터레이터를 통한 데이터 정렬 및 그룹화

데이터 정렬하기

데이터를 정렬하는 것은 많은 상황에서 유용합니다. 이터레이터를 사용하여 데이터를 정렬하는 방법에 대해 알아보겠습니다.

가정해보자. 우리는 다음과 같은 리스트를 가지고 있다고 합시다:

data = [5, 2, 9, 1, 7, 3]

sorted() 함수를 이용하여 이 리스트를 오름차순으로 정렬할 수 있습니다:

sorted_data = sorted(data)
print(sorted_data)  # [1, 2, 3, 5, 7, 9]

만일 내림차순으로 정렬하고 싶다면, reverse 매개변수를 True로 설정합니다:

sorted_data = sorted(data, reverse=True)
print(sorted_data)  # [9, 7, 5, 3, 2, 1]

데이터 그룹화하기

데이터 그룹화는 데이터를 특정 기준에 따라 그룹으로 나누는 것을 의미합니다. 이터레이터를 사용하여 데이터를 그룹화하는 방법을 살펴보겠습니다.

예를 들어, 다음과 같은 학생들의 점수 리스트가 있다고 가정해보겠습니다:

scores = [
    {'name': 'Alice', 'score': 80},
    {'name': 'Bob', 'score': 90},
    {'name': 'Charlie', 'score': 70},
    {'name': 'Dave', 'score': 90},
    {'name': 'Eve', 'score': 80}
]

이 점수들을 점수별로 그룹화하려면 groupby() 함수를 사용할 수 있습니다. 먼저 groupby() 함수를 사용하기 위해 operator 모듈을 임포트합니다:

import operator

그런 다음, groupby() 함수를 사용하여 점수를 기준으로 데이터를 그룹화합니다:

from itertools import groupby

scores.sort(key=operator.itemgetter('score'))  # 'score' 키를 기준으로 정렬
grouped_scores = groupby(scores, key=operator.itemgetter('score'))  # 점수를 기준으로 그룹화

for score, group in grouped_scores:
    print(f"Score: {score}")
    for student in group:
        print(f" - {student['name']}")

위 코드를 실행하면 다음과 같은 결과를 볼 수 있습니다:

Score: 70
 - Charlie
Score: 80
 - Alice
 - Eve
Score: 90
 - Bob
 - Dave

위의 코드 예제에서는 groupby() 함수를 사용하여 ‘score’ 키를 기준으로 데이터를 그룹화하였습니다. 이후에는 각 그룹에 대한 처리를 수행할 수 있습니다.

#python #data #sorting #grouping