[英]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.