두개의 Dictionary 데이터를 병합하기

 

var dict1 = [1:"a",2:"b"]

var dict2 = [2:"c",3:"d"]

 

1. dict1과 dict2의 key값이 2인 값이 각각 있을 경우 '+' 사용하면 2:"bc"로 데이터를 병합한다.

let sum1 = dict1.merging(dict2, uniquingKeysWith: +)

print(sum1)

 

결과 : [3: "d", 2: "bc", 1: "a"]

 

2. dict1과 dict2의 key값이 2인 값이 각각 있을 경우 두번째 값을 선택할 경우

let sum2 = dict1.merging(dict2) { (_ , current) in current }

print(sum2)

 

결과: [3: "d", 2: "c", 1: "a"]

 

3. dict1과 dict2의 key값이 2인 값이 각각 있을 경우 첫번째 값을 선택할 경우

let sum3 = dict1.merging(dict2) { (current , _) in current }

print(sum3)

 

결과 : [3: "d", 2: "b", 1: "a"]

 

Dictionary는 순서가 정해지지 않는다 뒤죽박죽 섞인다는 뜻이다. 정렬을 사용해 보겠다.

 

let sum1 = dict1.merging(dict2, uniquingKeysWith: +).sorted() { $0.key < $1.key }

print(sum1)

 

결과 : [(key: 1, value: "a"), (key: 2, value: "bc"), (key: 3, value: "d")]

key 값으로 정렬을 같이 할 경우 위 배열로 리턴된다. 당연한 거지만.. ^^

 

정렬 전

sum1  = [3: "d", 2: "bc", 1: "a"]

sum1[1]   // "a"

 

정렬 후

sum1 = [(key: 1, value: "a"), (key: 2, value: "bc"), (key: 3, value: "d")]

sum1[1]  // (key 2, value "bc")

 

merging만 사용할 경우와 sorted를 같이 사용할 경우 값 접근 방식에 주의 해주세요.

정렬 후, 정렬 전과 같은 결과 값을 접근하기 위해서는 아래와 같이 접근해야 된다.

sum[0].value.  // "a"

'Swift > 문법' 카테고리의 다른 글

[XCODE]LLDB 명령어 (디버깅 명령어)  (0) 2023.09.06
[SWIFT]Set  (0) 2023.07.26
[SWIFT]Array zip  (0) 2023.07.25
[SWIFT]enum 파라메터형 / if case 문  (0) 2023.07.25
[SWIFT]UnsafeMutablePointer<AudioBufferList> to AVAudioPCMBuffer  (0) 2023.07.25

+ Recent posts