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)(执行时间和消耗的内存线性取决于项目的数量)。
我正在使用 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)(执行时间和消耗的内存线性取决于项目的数量)。