如何在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}