List.SortByKey 및 List.SortByFunction을 활용한 리스트 정렬 방법

2024년 10월 16일

다이나모에서 리스트를 정렬하는 데에는 다양한 방법이 있습니다. 그중에서 List.SortByKeyList.SortByFunction 노드는 특정 기준에 따라 리스트를 정렬할 때 매우 유용합니다. 이번 포스팅에서는 이 두 노드의 차이점과 사용법을 설명하겠습니다.

1. List.SortByKey

List.SortByKey 노드는 Key 리스트를 기준으로 입력된 리스트를 정렬하는 기능을 제공합니다. 이때, 두 개의 리스트가 주어지며, Key 리스트가 오름차순으로 정렬된 후, 그 순서에 맞춰 입력된 리스트도 재정렬됩니다.

사용 방법

  1. Keys에 정렬 기준이 되는 값을 입력합니다.
  2. List에는 정렬될 리스트의 데이터를 입력합니다.
  3. 두 리스트의 아이템 개수는 동일해야 합니다. Key 값이 오름차순으로 정렬되면, 입력된 리스트도 그 순서대로 재정렬됩니다.

예시

List.SortByKey
이미지 1. List.SortByKey ⓒ디지털디자인포럼
Keys: [4, 7, 8, 3, 9, 5, 0, 1, 2, 6]
List: ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]

Key 리스트가 오름차순으로 정렬되면 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]가 되고, 이에 따라 입력 리스트는 ["G", "H", "I", "D", "A", "F", "J", "B", "C", "E"]로 재정렬됩니다.

이 방법은 리스트의 항목을 특정 기준(Key)에 따라 정렬할 때 유용하며, 리스트 간의 연관성을 유지하면서 정렬할 수 있습니다.

2. List.SortByFunction

List.SortByFunction 노드는 주어진 함수(Function)에 의해 리스트를 정렬하는 기능을 제공합니다. 이 노드는 리스트의 각 항목을 함수에 입력한 후 그 결과값을 바탕으로 정렬합니다.

사용 방법

  1. Function 입력에 정렬 기준이 될 함수를 입력합니다.
  2. 리스트는 해당 함수에 의해 정렬됩니다.
List.SortByFunction
이미지 1. List.SortByFunction ⓒ디지털디자인포럼

예시 1: 문자열 길이로 정렬

List: ["14 August","04 June","20 February","19 August","14 March","06 October","24 August","06 April","07 July","28 June","19 December"]
Function: String.Length
  • 각 문자열의 길이를 기준으로 리스트가 오름차순으로 정렬됩니다. 결과는 길이가 가장 짧은(7자) ["04 June", "07 July", "28 June"] 이 오름차순으로 먼저 정렬 되고 그다음으로 짧은(8자) ["14 March", "06 April", "19 August", "24 August"] 가 오름차순으로 정렬됩니다.

예시 2: 특정 문자로 정렬

List.SortByFunction을 사용하여 문자열의 특정 위치에서 시작하는 문자로 정렬할 수도 있습니다.

List: ["14 August","04 June","20 February","19 August","14 March","06 October","24 August","06 April","07 July","28 June","19 December"]
Function: String.Substring(StartIndex = 3, Length = 1)
  • 각 문자열의 3번째 인덱스부터 한 글자를 추출해 이를 기준으로 정렬합니다. 예를 들어, “14 August”의 3번째 인덱스는 “A”입니다. 따라서, 결과는 ["14 August", "19 August", "24 August", "06 April"] 처럼 3번째 문자가 A인 데이터들이 먼저 정렬되고 그 다음으로 오름차순에 의해 ["19 December", "20 February", "04 June", ...] 순으로 정렬됩니다.

3. 두 노드의 차이점

  • List.SortByKey: 두 개의 리스트를 입력받고, Key 리스트를 기준으로 입력 리스트를 재정렬하는 기능을 합니다. Key 리스트가 기준이 되므로, 두 리스트의 아이템 개수가 동일해야 합니다.
  • List.SortByFunction: 함수에 의해 직접 리스트를 정렬하는 방식으로, 함수의 조건에 따라 리스트 항목들이 정렬됩니다. 이 방식은 특정 규칙이나 조건에 맞는 정렬을 구현하는 데 유리합니다.

이 2개의 노드는 정말 자주 사용되는 노드 중 하나입니다. 상황에 따라 적절한 노드를 선택하여 리스트를 효율적으로 관리해 보세요!


답글 남기기


관련 포스트

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

  • Curve 지오메트리 등분하기

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

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

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

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

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

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