두개의 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 |