どうも、ちょげ(@chogetarou)です。
Swiftで辞書同士を結合する方法を紹介します。
方法

辞書同士を結合する方法は、3つあります。
forEach
1つ目は、forEachメソッドを使う方法です。
まず、結合させる辞書でforEachメソッドを呼び出します。
そして、forEachメソッドの処理で、結合先の辞書に要素を追加します。
dic.forEach{(key, value) in dic2[key] = value }
使用例
var dic = [
"a" : 1,
"b" : 2,
"c" : 3
]
var dic2 = [
"a" : 2,
"c" : 4,
"d" : 2
]
//dic2をdicに結合
dic2.forEach{ (key, value) in dic[key] = value }
print(dic)

merge
2つ目は、mergeメソッドを使う方法です。
まず、「dic.merge(){}」片方の辞書からmergeメソッドを呼び出します。
そして、mergeの()にもう片方の辞書、{}に「(curren, new) in ~」を指定します。
「in」の後には、呼び出し側の辞書の値を優先する場合はcurrent、()内の辞書の値を優先する場合はnewを指定します。
//呼び出し側の辞書「dic」の値を優先
dic.merge(dic2) {(current, new) in current}
//()内の辞書「dic2」の値を優先
dic.merge(dic2) {(current, new) in new }
「merge」は呼び出した辞書に結合した結果を反映させます。
使用例
var dic = [
"a" : 1,
"b" : 2,
"c" : 3
]
var dic2 = [
"a" : 2,
"c" : 4,
"d" : 2
]
dic.merge(dic2) {(current, new) in current}
print(dic)

merging
3つ目は、mergingメソッドを使う方法です。
まず、「dic.merging(){}」片方の辞書からmergeメソッドを呼び出します。
そして、mergingの()にもう片方の辞書、{}に「(curren, new) in ~」を指定します。
「in」の後には、呼び出し側の辞書の値を優先する場合はcurrent、()内の辞書の値を優先する場合はnewを指定します。
//呼び出し側の辞書「dic」の値を優先
dic.merging(dic2) {(current, new) in current}
//()内の辞書「dic2」の値を優先
dic.merging(dic2) {(current, new) in new }
mergingメソッドは、結合した結果となる辞書を戻り値として返します。
使用例
var dic = [
"a" : 1,
"b" : 2,
"c" : 3
]
var dic2 = [
"a" : 2,
"c" : 4,
"d" : 2
]
dic.merge(dic2) {(current, new) in current}
print(dic)

まとめ
辞書同士を結合する方法は、次の3つです。
- forEachメソッドを使う方法
- mergeメソッドを使う方法
- mergingメソッドを使う方法
コメント