이터레이터를 통한 데이터 정렬 및 그룹화
데이터 정렬하기
데이터를 정렬하는 것은 많은 상황에서 유용합니다. 이터레이터를 사용하여 데이터를 정렬하는 방법에 대해 알아보겠습니다.
가정해보자. 우리는 다음과 같은 리스트를 가지고 있다고 합시다:
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