[swift-users] Bls: How to merge two dictionaries?

Mr Bee pak.lebah at yahoo.com
Fri Nov 11 04:08:30 CST 2016


Thank you for your answer, but as I've said, I'm looking for a ready to use solution right from the Dictionary data type. Not using custom function or extension, neither bridging with NSMutableDictionary. Actually, as I'm now learning Swift, I write my learning process into a Swift blog (but in my local language). I was surprised to find that dictionary doesn't have method for this simple operation. I was expecting it would be as easy as using + operator like in array data type.

–Mr Bee
 

    Pada Jumat, 11 November 2016 16:31, Michael Nisi <michael.nisi at gmail.com> menulis:
 

 For example, you might want to merge values:
let d1 = ["Apples": 20, "Oranges": 13]let d2 = ["Oranges": 3, "Cherries": 9]
let d3 = [d1, d2].reduce([String : Int]()) { acc, d in  var dx = acc  for entry in d {    let key = entry.key    guard dx[key] == nil else {      dx[key]! += entry.value      continue    }    dx[entry.key] = entry.value  }  return dx}
print(d3) // ["Cherries": 9, "Apples": 20, "Oranges": 16]
On Fri, Nov 11, 2016 at 9:14 AM, Ray Fix via swift-users <swift-users at swift.org> wrote:

Hi Mr Bee,
The reason I don’t think it is provided is because it is difficult to know what to do when keys collide.  You could easily write such a thing and decide your own policy.  For example:
let d1 = ["Apples": 20, "Oranges": 13]let d2 = ["Oranges": 3, "Cherries": 9]
extension Dictionary {    func merged(with another: [Key: Value]) -> [Key: Value] {        var result = self        for entry in another {            result[entry.key] = entry.value        }        return result    }}
let result = d1.merged(with: d2)


On Nov 11, 2016, at 12:05 AM, Mr Bee via swift-users <swift-users at swift.org> wrote:
Hi,
I'm using Swift v3 on an El Capitan machine. I want to merge a dictionary into another compatible dictionary. However, I couldn't find addEntries function in the dictionary instance, like it was on NSMutableDictionary (https://developer.apple.com/ reference/foundation/ nsmutabledictionary). 
Does that mean that Swift standard library won't provide such similar function for native Swift dictionary? Or is there any other way of doing that natively? I mean using the built-in Swift's native dictionary function (https://developer.apple.com/ reference/swift/dictionary), no need to write a custom function, or bridging to NSMutableDictionary.
Thank you.
Regards,
–Mr Bee
______________________________ _________________
swift-users mailing list
swift-users at swift.org
https://lists.swift.org/ mailman/listinfo/swift-users



______________________________ _________________
swift-users mailing list
swift-users at swift.org
https://lists.swift.org/ mailman/listinfo/swift-users





   
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20161111/441ce254/attachment.html>


More information about the swift-users mailing list