Swift 2 如何从 2 个相似数组创建随机字典

Swift 2 How to create a random dictionary from 2 similar arrays

我正在使用 xcode 7,我想知道如何从两个相似的数组创建一个随机字典。 例如

var array1 = ["apple", "banana", "orange", "strawberry", "cherry"]
var array2 = ["apple", "banana", "orange", "strawberry", "cherry"]

然后我希望代码像这样创建一个随机字典:

var dict = ["apple": "banana", "banana": "apple", "orange": "cherry", "strawberry": "orange", "cherry": "strawberry"]

此外,我不希望值和键都相同,即没有 "apple": "apple".

我对编码比较陌生。任何帮助将不胜感激:)

你的具体例子有点做作,因为处理两个相同的数组真的没有意义,你可以简单地使用一个。我想这样的事情应该可以解决问题:

var fruits = ["apple", "banana", "orange", "strawberry", "cherry"]
var dict = [String: String]()

for (keyIndex, key) in fruits.enumerate() {
    var valueIndex: Int {
        var index: Int
        repeat {
            index = Int(arc4random_uniform(UInt32(fruits.count)))
        } while index == keyIndex || dict.values.contains(fruits[index])
        return index
    }
    dict[key] = fruits[valueIndex]
}

您可以使用 Nate Cook's answer 中的 shuffle 函数来打乱 values 数组,然后简单地用键和值填充字典:

var keys = ["apple", "banana", "orange", "strawberry", "cherry"]
var values = keys

values.shuffle()

var d = [String: String]()

for (index, item) in keys.enumerate() {
    d[item] = values[index]
}

这个解决方案的优点是它是 O(n)(执行时间和消耗的内存线性取决于项目的数量)。