我正在使用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"。
我对编码比较陌生。任何帮助将不胜感激:)
答案 0 :(得分:2)
您可以使用Nate Cook's answer中的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]
}
数组,然后只需使用键和值填充字典:
public class MyObject
{
private MyObject()
{
intArray = new int[3]{1,2,3}
int1 = 1;
SaveCopy();
}
private void SaveCopy()
{
intArray_Copy = intArray;
int1_Copy = int1;
}
public int[] intArray { get; set; }
public int int1 { get; set; }
public int[] intArray_Copy { get; set; }
public int int1_Copy { get; set; }
}
这个解决方案的优点是它的O(n)(执行时间和消耗的内存线性地取决于项目数)。
答案 1 :(得分:1)
你的特定例子有点人为,因为处理两个相同的数组真的没有意义,你可以简单地使用一个。我觉得这样的事情可以解决问题:
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]
}