Q:

How can I merge two arrays into a dictionary? 

I have 2 arrays:
    var identic = [String]()
    var linef = [String]()

I've appended them with data.  Now for usability purposes my goal is to combine them all into a dictionary with the following structure
FullStack = ["identic 1st value":"linef first value", "identic 2nd value":"linef 2nd value"]

I've been browsing around the net and couldnt find a viable solution to this. 
Any ideas are greatly appreciated.  
Thank you! 

A:

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:

https://developer.apple.com/documentation/swift/dictionary/3127165-init

https://developer.apple.com/documentation/swift/dictionary/3127161-init

A:

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:

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
        }
    }
}

