在 Swift 2 中从对象和键数组创建字典



我有键数组和对象数组,我想创建一个字典,键数组中索引 Y 处的每个键都引用对象数组中同一索引 Y 的对象,即我想制作这样的代码,但在 Swift 2 中:

NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithObjects:ObjectsArray forKeys:KeysArray];
let keys = [1,2,3,4]
let values = [10, 20, 30, 40]
assert(keys.count == values.count)
var dict:[Int:Int] = [:]
keys.enumerate().forEach { (i) -> () in
    dict[i.element] = values[i.index]
}
print(dict) // [2: 20, 3: 30, 1: 10, 4: 40]

或更实用和通用的方法

func foo<T:Hashable,U>(keys: Array<T>, values: Array<U>)->[T:U]? {
    guard keys.count == values.count else { return nil }
    var dict:[T:U] = [:]
    keys.enumerate().forEach { (i) -> () in
        dict[i.element] = values[i.index]
    }
    return dict
}
let d = foo(["a","b"],values:[1,2])    // ["b": 2, "a": 1]
let dn = foo(["a","b"],values:[1,2,3]) // nil

这是一个通用解决方案

func dictionaryFromKeys<K : Hashable, V>(keys:[K], andValues values:[V]) -> Dictionary<K, V>
{
  assert((keys.count == values.count), "number of elements odd")
  var result = Dictionary<K, V>()
  for i in 0..<keys.count {
    result[keys[i]] = values[i]
  }
  return result
}
let keys = ["alpha", "beta", "gamma", "delta"]
let values = [1, 2, 3, 4]
let dict = dictionaryFromKeys(keys, andValues:values)
print(dict)

试试这个:

    let dict = NSDictionary(objects: <Object_Array>, forKeys: <Key_Array>)
    //Example
    let dict = NSDictionary(objects: ["one","two"], forKeys: ["1","2"])
let keyArray = [1,2,3,4]
let objectArray = [10, 20, 30, 40]
let dictionary = NSMutableDictionary(objects: objectArray, forKeys: keyArray)
print(dictionary)

输出:-

{
  4 = 40;
  3 = 30;
  1 = 10;
  2 = 20;
}

最新更新