[Swift]辞書を結合するには?

Swift

どうも、ちょげ(@chogetarou)です。

Swiftで辞書同士を結合する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

辞書同士を結合する方法は、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」は呼び出した辞書に結合した結果を反映させます。

mergeで結合の仕方が2通りあるのは、同じキーが存在する場合、どちらのキーを優先するかを決めないといけないからです。

使用例


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メソッドを使う方法

コメント

タイトルとURLをコピーしました