무작위 리스트에서 지정한 범위로 아이템 그룹화하는 방법

2024년 10월 16일

다이나모에서 리스트를 다루다 보면, 특정 조건에 맞는 아이템들을 골라 그룹화해야 할 때가 있습니다. 이번 포스팅에서는 무작위로 배열된 리스트에서 일정한 범위에 속하는 아이템들만 추출해 그룹화하는 방법을 소개하겠습니다.

1. 예제 리스트

다음과 같은 리스트를 예시로 들어보겠습니다:

다이나모 리스트 그룹핑
이미지 1. 리스트 그룹핑 ⓒ디지털디자인포럼
예시 리스트 : List = [0, 1500, 100, 110, 200, 3000, 3500, 5000, 7800, 9000, 15000, 7700]

우리는 이 리스트에서 각 항목을 아래 조건에 맞게 그룹핑하고 싶다고 가정해 보도록 하겠습니다:

  1. 0 < List ≤ 2000
  2. 2000 < List ≤ 5000
  3. 5000 < List ≤ 8000
  4. 8000 < List ≤ 15000

2. 범위 조건에 따른 그룹화

리스트의 각 항목을 비교해서 위 조건에 맞는 범위 내의 값들만 선택하고, 이를 그룹화할 수 있습니다. 이를 위해 다이나모에서 ><= 노드를 사용하여 각 범위 조건을 설정합니다.

다이나모 리스트 그룹핑
이미지 2. 리스트 그룹핑 ⓒ디지털디자인포럼

범위 조건 적용 방법:

  • > 노드와 <= 노드를 이용해 각 아이템이 원하는 범위에 포함되는지 여부를 판별합니다.
  • 조건을 전부 비교하기 위해 > 노드와 <=노드는 레이싱 옵션을 Cross Product Lacing 으로 설정합니다.
  • 그룹별 인덱스를 통해 그룹핑 합니다.

이 방법은 예를 들어 Z값이나 다른 특정 속성을 기준으로 객체들을 범위에 따라 분류하는 데 유용합니다.

3. 일정한 규칙에 따른 그룹화

이번에는 범위가 일정한 간격으로 증가하는 경우를 다뤄보겠습니다. 예를 들어, 각 항목을 3000 단위로 분류하고 싶다면, 다이나모에서 / 노드와 List.GroupByKey 노드를 활용할 수 있습니다.

다이나모 리스트 그룹핑
이미지 3. 리스트 그룹핑 ⓒ디지털디자인포럼

그룹화 규칙 적용 방법:

  • 리스트의 각 아이템을 3000으로 나누어 그 몫을 그룹의 기준(Key)으로 사용합니다.
  • 이를 통해 동일한 범위에 속하는 값들을 하나의 그룹으로 묶을 수 있습니다.
예시 리스트: List = [0, 1500, 100, 110, 200, 3000, 3500, 5000, 7800, 9000, 11000, 7700]

여기서 각 아이템을 3000으로 나누고, 몫에 따라 아래와 같이 그룹화할 수 있습니다:

  • 0 <= List < 3000
  • 3000 <= List < 6000
  • 6000 <= List < 9000
  • 9000 <= List < 12000

이를 통해 리스트를 규칙에 따라 자동으로 그룹화할 수 있습니다.

4. 정리

  • 지정한 범위로 그룹화: 조건에 따라 리스트의 각 아이템을 그룹핑하는 방법은 특정 범위 내의 항목을 분류할 때 유용합니다. 다이나모의 ><= 노드를 활용하여 범위 조건을 지정할 수 있습니다.
  • 일정한 간격으로 그룹화: 리스트의 항목을 일정한 규칙으로 분류하려면 / 노드와 List.GroupByKey 노드를 활용해 각 아이템을 특정 기준(몫)에 따라 그룹화할 수 있습니다.

위 방법들을 이용해, 리스트 내의 데이터를 효과적으로 그룹핑하고 정리할 수 있습니다. 상황에 맞는 방식을 선택하여 데이터를 보다 쉽게 관리해 보세요!


답글 남기기


관련 포스트

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

  • Curve 지오메트리 등분하기

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

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

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

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

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

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