Produce an array of dictionaries from two arrays in Swift

Viewed 43

I have two dictionaries:

name = ["A","B","C","D","E"]
number = ["1","2","3","4","5"]

How can I produce the following, using built-in functions?

[
    {name : "A", number: "1"},
    {name : "B", number: "2"},
    {name : "C", number: "3"},
    {name : "D", number: "4"},
    {name : "E", number: "5"}
]
1 Answers

The desired result you have shown is not a single dictionary, but an array of dictionaries, i.e. [[String: String]].

You can convert the two arrays like this:

name = ["A","B","C","D","E"]
number = ["1","2","3","4","5"]

let result = zip(name, number).map { ["name": $0, "number": $1] }

However, I would suggest you create a struct/class for storing these name/number pairs, rather than using an array of dictionaries:

struct Foo { // give this an appropriate name!
    let name: string
    let number: String
}

let result = zip(name, number).map { Foo(name: $0, number; $1) }
Related