Swift 2如何从2个类似的数组创建一个随机字典

时间:2015-12-02 23:34:51

标签: arrays dictionary swift2 xcode7

我正在使用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"。

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

2 个答案:

答案 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]
}