在 Swift 中,我试图将一组字典扁平化为一个字典
IE
let arrayOfDictionaries = [["key1": "value1"], ["key2": "value2"], ["key3": "value3", "key4": "value4"]]
//the end result will be:
flattenedArray = ["key1": "value1", "key2": "value2", "key3": "value3", "key4": "value4"]
我尝试过使用 flatmap,但返回结果的类型是[(String, AnyObject)]
并不是[String, Object]
ie
let flattenedArray = arrayOfDictionaries.flatMap { $0 }
// type is [(String, AnyObject)]
所以我有两个问题:
编辑:我更喜欢使用 Swift 的 map/flatmap/reduce 等函数式方法,而不是 for 循环
括号是什么意思?
这与逗号而不是冒号一起应该提供第一个线索:括号意味着您将获得一个元组数组。由于您正在寻找字典,而不是数组,这告诉您需要将元组序列(键值对)转换为单个字典。
我怎样才能达到预期的结果?
一种方法是使用reduce
, 像这样:
let flattenedDictionary = arrayOfDictionaries
.flatMap { $0 }
.reduce([String:String]()) { (var dict, tuple) in
dict.updateValue(tuple.1, forKey: tuple.0)
return dict
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)