[swift-users] How to merge two dictionaries?
Michael Nisi
michael.nisi at gmail.com
Fri Nov 11 03:31:16 CST 2016
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/8897cbd2/attachment.html>
More information about the swift-users
mailing list