두 개의 사전 중 배열에 키가 들어있는 사전이나 값으로 다른 사전을 결합하는 방법이 궁금합니다.두 개의 복잡한 사전을 결합하는 방법
예 :
var dict1 = ["bbb":"dict1",
"her": "dict1"]
let dict2 = ["aaa":"dict2",
"her": "doct2",
"bob": "doct2"]
dict1 += dict2 // result is as I expected
func += <K, V> (inout left: [K:V], right: [K:V]) {
for (k, v) in right {
left.updateValue(v, forKey: k)
}
}
하지만 더 복잡한 사전을 결합하려는 경우 문제가 발생합니다.
var dict1 = ["bbb":"dict1",
"her": "dict1"]
let complexDict2 = ["aaa":"dict2",
"her": "dict2",
"arr": ["one", "two"]]
dict1 += complexDict2 // in here method which override '+=' operator for dictionaries does not work anymore...
제 질문은 여러분이 더 복잡한 사전을 결합하여 입증 된 방법인지 여부입니다. 결합 dict1과 complexDict2에서
Upadate
내 예상 된 결과는 다음과 같습니다
이let resultDict = ["aaa":"dict1",
"aaa":"dict2",
"her": "dict2",
"arr": ["one", "two"]]
원하는 결과가 무엇을, 어떻게 실제 결과의 차이점은 무엇입니까? –
거의 사전에 사전을 보았을 때마다 중첩 된 구조체를 사용해야하는 끔찍한 똥똥 거리기가되었습니다. 나는 이것에 신중할 것이다. – Alexander
이것은 [Minimal, Complete, and Verifiable example] (http://stackoverflow.com/help/mcve)이 아닙니다. 하나의 중요한 누락 된 구성 요소는'complexDict'가 유추 된 타입'[String : NSObject]'을 갖기 위해'import foundation'을 가져야 만한다는 것입니다. 그렇지 않으면 "표현의 타입이 더 많은 컨텍스트없이 모호합니다"라는 오류가 발생합니다. 일반적으로 놀이터에서 코드를 무대에 올려 놓은 다음 놀이터에서 코드를 게시하는 것이 좋습니다. – ColGraff