如何在Swift 5中展开Dict(字符串、数组)
我可以使用如何在Swift 5中展开Dict(字符串、数组),swift,dictionary,Swift,Dictionary,我可以使用map/reduce将字典扩展到Swift 5中的成对数组,还是必须对每个执行 let dict = ["A": ["1","2","3","4"], "B": ["5","6","7","8"]] ??? //result = [["A", "1"],["A", "2"],....["B", "5"],....] 这是最短的解决方案 let result = dict.map { dic in dic.value.map { [dic.k
map/reduce
将字典扩展到Swift 5中的成对数组,还是必须对每个执行
let dict = ["A": ["1","2","3","4"],
"B": ["5","6","7","8"]]
???
//result = [["A", "1"],["A", "2"],....["B", "5"],....]
这是最短的解决方案
let result = dict.map { dic in
dic.value.map { [dic.key : $0] }
}.reduce([], +)
这是最短的解决方案
let result = dict.map { dic in
dic.value.map { [dic.key : $0] }
}.reduce([], +)
这里有一个不需要减少的解决方案:
let dict = ["A": ["1","2","3","4"],
"B": ["5","6","7","8"]]
let result = dict.map { kv in kv.value.map { [kv.key, $0] } }.flatMap { $0 }
这里有一个不需要减少的解决方案:
let dict = ["A": ["1","2","3","4"],
"B": ["5","6","7","8"]]
let result = dict.map { kv in kv.value.map { [kv.key, $0] } }.flatMap { $0 }
@MQLN的可能重复似乎不是真正的重复它不是相同的问题@MQLN的可能重复似乎不是真正的重复它不是相同的问题reduce([]){$0+$1}
可以用reduce([],+)
替换。至少,您应该使用reduce(into:[]){$0+=$1}
,否则您会得到二次时间复杂度,或者更好,只需使用.flatMap{$0}
reduce([]){$0+$1}
就可以用reduce([],+)
替换。至少,您应该使用reduce(into:[]){$0+=$1}
,否则您会得到二次时间复杂度,或者更好,只需使用.flatMap{$0}
您应该使用reduce(into:[]){$0+=$1},或者您会得到二次时间复杂度,或者更好,只需使用.flatMap{$0}您应该使用reduce(into:[]){$0+=$1},或者你会得到二次时间复杂度,甚至更好,只要使用.flatMap{$0}