Swift:在数组中合并字典

gar*_*ley 3 arrays dictionary swift

我正在寻找一种结合字典的优雅方法。

Input: [[a: foo], [b: bar], [c: baz]]
Output: [a: foo, b: bar, c: baz]
Run Code Online (Sandbox Code Playgroud)

实现此目标的最佳方法是什么?

Jaw*_*wad 6

您可以使用reduce,但是必须定义一个“ combine”方法,该方法将为您提供来自2个单独词典的组合词典。

所以你可以做这样的事情

let inputArray = [["a": "foo"], ["b": "bar"], ["c": "baz"], ["c": "bazx"]]
let flat = inputArray.reduce([:]) { $0 + $1 }
Run Code Online (Sandbox Code Playgroud)

如果您在字典上重载了“ +”

func + <K, V>(lhs: [K : V], rhs: [K : V]) -> [K : V] {
    var combined = lhs

    for (k, v) in rhs {
        combined[k] = v
    }

    return combined
}
Run Code Online (Sandbox Code Playgroud)


Leo*_*bus 1

let inputArray = [["a": "foo"], ["b": "bar"], ["c": "baz"]].reduce([], +)
var result:[String:String] = [:]
for item in inputArray {
    result.updateValue(item.1, forKey: item.0)
}
println(result.description)
Run Code Online (Sandbox Code Playgroud)