How can I merge two arrays into a dictionary? How can I merge two arrays into a dictionary? ios ios

How can I merge two arrays into a dictionary?


Starting with Xcode 9.0, you can simply do:

var identic = [String]()var linef = [String]()// Add data...let fullStack = Dictionary(uniqueKeysWithValues: zip(identic, linef))

If your keys are not guaranteed to be unique, use this instead:

let fullStack =    Dictionary(zip(identic, linef), uniquingKeysWith: { (first, _) in first })

or

let fullStack =    Dictionary(zip(identic, linef), uniquingKeysWith: { (_, last) in last })

Documentation:


Use enumerated():

var arrayOne: [String] = []var arrayTwo: [String] = []var dictionary: [String: String] = [:]for (index, element) in arrayOne.enumerated() {    dictionary[element] = arrayTwo[index]}

The pro approach would be to use an extension:

extension Dictionary {    public init(keys: [Key], values: [Value]) {        precondition(keys.count == values.count)        self.init()        for (index, key) in keys.enumerate() {            self[key] = values[index]        }    }}

Edit: enumerate()enumerated() (Swift 3 → Swift 4)


A slightly different method, which doesn't require the arrays to be of the same length, because the zip function will safely handle that.

extension Dictionary {    init(keys: [Key], values: [Value]) {        self.init()        for (key, value) in zip(keys, values) {            self[key] = value        }    }}