How do I create dictionary from array of tuples?

Swift 4

If your tuples is (Hashable, String) you can use:

let array = [("key1", "value1"), ("key2", "value2"), ("key3", "value3")]
let dictionary = array.reduce(into: [:]) { $0[$1.0] = $1.1 }
print(dictionary) // ["key1": "value1", "key2": "value2", "key3": "value3"]

Depending on what you want to do, you could:

let tuples = [(0, "0"), (1, "1"), (1, "2")]
var dictionary = [Int: String]()

Option 1: replace existing keys

tuples.forEach {
    dictionary[$0.0] = $0.1
}    
print(dictionary) //prints [0: "0", 1: "2"]

Option 2: Don't allow repeting keys

enum Errors: Error {
    case DuplicatedKeyError
}

do {
    try tuples.forEach {
        guard dictionary.updateValue($0.1, forKey:$0.0) == nil else { throw Errors.DuplicatedKeyError }
    }
    print(dictionary)
} catch {
    print("Error") // prints Error
}

Swift 4

For creation you can use native Dictionary's init functions:

Dictionary(uniqueKeysWithValues: [("a", 0), ("b", 1)]) 
// ["b": 1, "a": 0]

Dictionary(uniqueKeysWithValues: [("a", 0), ("b", 1), ("b", 2)])
// Fatal error: Duplicate values for key: 'b'

// takes the first match
Dictionary([("a", 0), ("b", 1), ("a", 2)], uniquingKeysWith: { old, _ in old })
// ["b": 1, "a": 0]

// takes the latest match
Dictionary([("a", 0), ("b", 1), ("a", 2)], uniquingKeysWith: { $1 }) 
// ["b": 1, "a": 2]

Also if you want to have the shortcut:

Dictionary([("a", 0), ("b", 1), ("a", 2)]) { $1 } 
// ["b": 1, "a": 2]