Swiftで辞書(dictionary)をマージする方法について記載します。
目次
辞書をマージする方法
マージするには、mergeメソッド もしくは mergingメソッド を使用します。
メソッドの違いは次のようになります。
merge
マージ結果をマージに使用した変数に代入します。
辞書A.merge( 辞書B ) の場合、マージ結果は辞書Aに代入されます。
merging
マージに使用した変数は変更せず、マージ結果を戻り値として返します。
辞書C = 辞書A.merging( 辞書B ) の場合、マージ結果は辞書Cに代入され、辞書AとB の変数は変更されません。
1. mergeメソッドの使用方法
辞書A と 辞書B の値をマージします。
マージ結果は、マージに使用した変数に代入されます。
辞書A.merge( 辞書B ) の場合は、辞書A に結果が代入されます。
また、同じキーがある場合、辞書A・B どちらの値を使用するかはクロージャで指定します。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
var dict1 = [ "apple": 100 , "orange": 200, "banana":300 ] var dict2 = [ "banana": 3000, "peach": 500 ] // dict1 に dict2 をマージする(重複するキーは dict1 のものを使用する) dict1.merge( dict2 ){ (current, _) in current } // dict1 が更新される print( dict1 ) // ["apple": 100, "orange": 200, "banana": 300, "peach": 500] // dict2 の内容は変わらない print( dict2 ) // ["banana": 3000, "peach": 500] // dict1 に dict2 をマージする(重複するキーは dict2 のものを使用する) dict1.merge( dict2 ){ (_, new) in new } print(dict1) // ["apple": 100, "orange": 200, "banana": 3000, "peach": 500] |
2. mergingメソッドの使用方法
辞書A と 辞書B の値をマージします。
マージ結果は、戻り値として返されます。
辞書C = 辞書A.merge( 辞書B ) の場合は、辞書C に結果が代入されます。
また、同じキーがある場合、辞書A・B どちらの値を使用するかはクロージャで指定します。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
let dict1 = [ "apple": 100 , "orange": 200, "banana":300 ] let dict2 = [ "banana": 3000, "peach": 500 ] // dict1 と dict2 をマージする(重複するキーは dict1 のものを使用する) let dict3 = dict1.merging( dict2 ){ (current, _) in current } // マージされた値は戻り値で返される print( dict3 ) // ["apple": 100, "orange": 200, "banana": 300, "peach": 500] // マージに使用した dict1・dict2 は変更されない print( dict1 ) // ["apple": 100, "orange": 200, "banana": 300] print( dict2 ) // ["banana": 3000, "peach": 500] // dict1 と dict2 をマージする(重複するキーは dict2 のものを使用する) let dict4 = dict1.merging( dict2 ){ (_, new) in new } print(dict4) // ["apple": 100, "orange": 200, "banana": 3000, "peach": 500] |