簡體   English   中英

從swift 2中的對象和鍵數組創建字典

[英]create dictionary from objects and keys arrays in swift 2

我有Keys數組和Objects數組,我想創建一個字典,鍵數組中索引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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM