将字典与数组合并为 Swift 中的值 4
Merging dictionaries with arrays as values in Swift 4
我有以下两个词典要合并。
var dict1 = ["May 21": [1,2],
"May 22": [3,4]]
var dict2 = ["May 22": [5,6],
"May 23": [7,8]]
这是我正在寻找的结果:
["May 21": [1, 2],
"May 22": [3, 4, 5, 6],
"May 23": [7, 8]]
我在 Swift 4:
中找到了新的 merge() 函数
dict1.merge(dict2, uniquingKeysWith: { (old, _) in old })
但这当然不会正确合并数组,只需将其替换为新值或旧值即可。
是否有 Swifty 方法可以做到这一点,也许有一些闭包?我当然可以像这样遍历所有键和值,但这看起来有点脏:
func mergeDicts(dict1: [String: [Int]], dict2: [String: [Int]]) -> [String: [Int]] {
var result = dict1
for (key, value) in dict2 {
if let resultValue = result[key] {
result[key] = resultValue + value
} else {
result[key] = value
}
}
return result
}
你已经找到了正确的方法,你只需要连接
唯一闭包中的数组值:
var dict1 = ["May 21": [1,2], "May 22": [3,4]]
var dict2 = ["May 22": [5,6], "May 23": [7,8]]
dict1.merge(dict2, uniquingKeysWith: +)
print(dict1)
// ["May 22": [3, 4, 5, 6], "May 23": [7, 8], "May 21": [1, 2]]
我有以下两个词典要合并。
var dict1 = ["May 21": [1,2],
"May 22": [3,4]]
var dict2 = ["May 22": [5,6],
"May 23": [7,8]]
这是我正在寻找的结果:
["May 21": [1, 2],
"May 22": [3, 4, 5, 6],
"May 23": [7, 8]]
我在 Swift 4:
中找到了新的 merge() 函数dict1.merge(dict2, uniquingKeysWith: { (old, _) in old })
但这当然不会正确合并数组,只需将其替换为新值或旧值即可。
是否有 Swifty 方法可以做到这一点,也许有一些闭包?我当然可以像这样遍历所有键和值,但这看起来有点脏:
func mergeDicts(dict1: [String: [Int]], dict2: [String: [Int]]) -> [String: [Int]] {
var result = dict1
for (key, value) in dict2 {
if let resultValue = result[key] {
result[key] = resultValue + value
} else {
result[key] = value
}
}
return result
}
你已经找到了正确的方法,你只需要连接 唯一闭包中的数组值:
var dict1 = ["May 21": [1,2], "May 22": [3,4]]
var dict2 = ["May 22": [5,6], "May 23": [7,8]]
dict1.merge(dict2, uniquingKeysWith: +)
print(dict1)
// ["May 22": [3, 4, 5, 6], "May 23": [7, 8], "May 21": [1, 2]]