How can I merge two arrays into a dictionary?

前端 未结 6 1744
青春惊慌失措
青春惊慌失措 2020-12-16 14:39

I have 2 arrays:

    var identic = [String]()
    var linef = [String]()

I\'ve appended them with data. Now for usability purposes my goal

6条回答
  •  清酒与你
    2020-12-16 15:11

    Here is a extension that combines some of the previous answers and accepts all Sequences, not only Arrays.

    public extension Dictionary {
        init(keys: K, values: V) where K.Element == Key, V.Element == Value, K.Element: Hashable {
            self.init()
            for (key, value) in zip(keys, values) {
                self[key] = value
            }
        }
    }
    

    That extension doesn't require the sequences to be the same lengths. If you want that, here is an extension with assertions.

    public extension Dictionary {
        init(keys: K, values: V) where K.Element == Key, V.Element == Value, K.Element: Hashable {
            self.init()
            var keyIterator = keys.makeIterator()
            for value in values {
                let key = keyIterator.next()
                assert(key != nil, "The value sequence was longer.")
                self[key!] = value
            }
            assert(keyIterator.next() == nil, "The key sequence was longer.")
        }
    }
    

提交回复
热议问题