List.GroupByKey 및 List.GroupByFunction을 활용한 리스트 그룹화 방법

2024년 10월 16일

다이나모에서 리스트를 다룰 때, 데이터를 특정 기준에 따라 그룹화할 수 있는 두 가지 강력한 도구인 List.GroupByKeyList.GroupByFunction을 사용할 수 있습니다. 이 포스팅에서는 각각의 기능과 사용법을 소개하겠습니다.

1. List.GroupByKey

List.GroupByKey 노드는 입력된 Key 리스트를 기준으로 입력 리스트의 데이터를 그룹화합니다. 이때, 입력 리스트Key 리스트의 항목 개수는 동일해야 하며, Key 리스트의 고유 값에 따라 입력 리스트가 그룹으로 분류됩니다.

List.GroupByKey
이미지 1. List.GroupByKey ⓒ디지털디자인포럼

사용 방법

  1. Key 리스트: 그룹화 기준이 되는 리스트를 입력합니다.
  2. 입력 리스트: 그룹화할 리스트를 입력합니다.
  3. 결과: Key 리스트의 고유 값(Unique Keys)에 따라 입력 리스트가 그룹으로 분류됩니다.

예시

리스트: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Key 리스트: [A, B, C, D, E, B, C, D, E, F, C, D, E, F, G]

이 리스트를 그룹화하면, Key 리스트에서 중복된 아이템을 제거한 고유 값이 먼저 반환됩니다:

Unique Keys: [A, B, C, D, E, F, G]

이제, Unique Keys를 기준으로 입력 리스트가 그룹화됩니다:

  • A 그룹: [1]
  • B 그룹: [2, 6]
  • C 그룹: [3, 7, 11]
  • D 그룹: [4, 8, 12]
  • E 그룹: [5, 9, 13]
  • F 그룹: [10, 14]
  • G 그룹: [15]

이를 통해 Key 리스트에 따라 각 아이템을 원하는 그룹으로 나눌 수 있습니다.

2. List.GroupByFunction

List.GroupByFunction 노드는 특정 함수(Function)에 의해 리스트를 새롭게 그룹화하는 기능을 제공합니다. 이 노드는 함수에 의해 반환된 값에 따라 리스트를 그룹화하며, 다양한 조건을 적용하여 데이터를 효율적으로 분류할 수 있습니다.

List.GroupByFunction
이미지 2. List.GroupByFunction ⓒ디지털디자인포럼

사용 방법

  1. Function: 리스트를 그룹화할 때 적용할 함수를 입력합니다.
  2. 입력 리스트: 그룹화할 리스트를 입력합니다.
  3. 결과: 함수에 의해 반환된 기준 값에 따라 리스트가 그룹화됩니다.

예시 1: 특정 문자열 포함 여부로 그룹화

리스트: ["March 1","March 3","March 5","March 8","March 20","June 28","June 3","June 8","June 21","June 16","May 28","December 3","April  8","April  21","November  16"]
Function: March가 포함된 문자열을 찾는 함수

이 함수는 “March”라는 문자열이 포함된 항목을 기준으로 리스트를 그룹화합니다:

  • March 그룹: [“March1”, “March3”, “March5”, “March8”, “March20”]
  • March 외 그룹: [“June”, “May”, “December”,…]

예시 2: 문자열 길이로 그룹화

리스트: ["March 1","March 3","March 5","March 8","March 20","June 28","June 3","June 8","June 21","June 16","May 28","December 3","April  8","April  21","November  16"]
Function: String.Length

문자열의 길이를 기준으로 리스트가 그룹화됩니다:

  • 길이 6인 그룹: [“June 3”, “June 8”, “May 28”]
  • 길이 7인 그룹: [“March1”, “March3”, “March5”, “March8”, “June 28”, “June 21”, “June 16”]
  • 길이 8인 그룹: [“banana”, “April 8”]
    (“April 8″의 길이가 8 인 이유는 April과 8사이에 공백이 1개가 아니라 2개가 적용되었기 때문입니다, 공백의 길이도 문자 길이에 포함되니 유의하세요)

이처럼 List.GroupByFunction은 특정 속성이나 규칙을 적용해 리스트를 동적으로 그룹화하는 데 적합합니다.

3. 두 노드의 차이점

  • List.GroupByKey: Key 리스트의 고유 값에 따라 리스트가 그룹화됩니다. Key와 리스트 간의 항목 개수가 동일해야 하며, Key 리스트의 중복된 값은 제거되고 고유 값에 따라 리스트가 그룹화됩니다.
  • List.GroupByFunction: 주어진 함수에 의해 리스트가 그룹화됩니다. 리스트의 항목을 함수의 기준에 따라 동적으로 분류할 수 있어, 복잡한 조건을 적용한 그룹화가 가능합니다.

이 노드의 작동방식은 List.SortByKey와 SortByFunction과 유사점이 있습니다. 상황에 맞는 노드를 선택해 데이터를 효율적으로 그룹화하고, 리스트를 다루는 방법을 익혀보세요!


답글 남기기


관련 포스트

  • 다이나모에서 구성평면과 벡터 크기 및 방향 확인하는 방법

  • Curve 지오메트리 등분하기

  • 다이나모에서 데이터 타입(Data Type) 이해하기

  • 다이나모에서 리스트 분할하기: List.Chop 및 List.Slice 노드 사용법

  • 다이나모에서 특정 Index의 Item 추출 또는 특정 Item의 Index 추출하기

  • Dynamo에서 True값과 False값 구분하기: List.FilterByBoolMask 사용법

  • Dynamo에서 유형 파라미터 vs 인스턴스 파라미터: 차이점과 사용법

  • Dynamo에서 n번째 항까지의 총합 구하기: List.Scan 사용법