我正在寻找一种优雅的方式来组合一系列词典。
Input: [[a: foo], [b: bar], [c: baz]]
Output: [a: foo, b: bar, c: baz]
实现此目标的最佳方法是什么?
最佳答案
您可以使用reduce,但是必须定义一个“combine”方法,该方法将为您提供来自2个单独词典的组合词典。
所以你可以做这样的事情
let inputArray = [["a": "foo"], ["b": "bar"], ["c": "baz"], ["c": "bazx"]]
let flat = inputArray.reduce([:]) { $0 + $1 }
如果您在字典上重载了“+”
func + <K, V>(lhs: [K : V], rhs: [K : V]) -> [K : V] {
var combined = lhs
for (k, v) in rhs {
combined[k] = v
}
return combined
}