파이썬 itertools 모듈의 group by 함수

이동욱

2021/03/06

Categories: 프로그래밍 - 파이썬 Tags: itertools group by

배경


회사에서 이슈를 처리 하다가, 키 값을 기준으로 하위 리스트를 처리할 일이 있었다. 자바였으면 groupingBy()를 이용하여 쉽게 처리를 할 수 있다는 생각을 하고 있었던 참에 파이썬도 이와같은 함수를 지원하지 않을까라는 생각이 들어서 검색을 해보니 비슷한 함수가 있었다.

Screen Shot 2021-03-06 at 1 18 19 PM

아래는 groupby를 사용한 예제이다.

from itertools import groupby

things = [("animal", "bear"), ("animal", "duck"), ("plant", "cactus"), ("vehicle", "speed boat"), ("vehicle", "school bus")]

for key, group in groupby(things, lambda x: x[0]):
    for thing in group:
        print("A %s is a %s." % (thing[1], key))
    print("")

키 값으로 튜플의 첫 번째 값을 사용하여 정렬 하였고, 키 값에 따른 그룹이 생성될 때마다 이를 출력한 것이다.

주의할 점

# [k for k, g in groupby('AAAABBBCCDAABBB')] --> A B C D A B
# [list(g) for k, g in groupby('AAAABBBCCD')] --> AAAA BBB CC D

정렬을 해주지 않으면 위와 같은 형태로 만들어 지게 된다.

참고 문헌

>> Home