0
votes

Comment puis-je élargir un dict (chaîne, matrice) à Swift 5

Puis-je élargir le dictionnaire à une matrice de paires à Swift 5 en utilisant mapper / réduire code> ou devrai-je faire un pour chaque code>?

let dict = ["A": ["1","2","3","4"],
            "B": ["5","6","7","8"]]

???

//result = [["A", "1"],["A", "2"],....["B", "5"],....]


2 commentaires

Dupliqué possible de Comment convertir le dictionnaire en array


@MQLN ne semble pas vraiment comme un double problème n'est pas le même problème


3 Réponses :


2
votes
let result = dict.map { (letter: String, digits: [String]) in
    return digits.map { digit in
        return [letter, digit]
    }
}.reduce([]) {
    $0 + $1
}

1 commentaires

Réduire ([]) {0 $ + 1 $} peut simplement être remplacé par Réduire ([], +) . Au minimum, vous devez utiliser réduire (dans: []) {0 $ + = 1 $ 1)} , ou bien que vous obtenez une complexité de temps quadratique, voire mieux, il suffit d'utiliser .flatmap {$ 0 }



0
votes

Celui-ci est la solution la plus courte.

let result = dict.map { dic in
        dic.value.map { [dic.key : $0] }
    }.reduce([], +) 


1 commentaires

Vous devez utiliser réduire (dans: []) {$ 0 + = 1 $ 1)}, sinon vous obtenez une complexité de temps quadratique, voire mieux, utilisez simplement .flatmap {$ 0}



0
votes

Voici une solution qui n'a pas besoin Réduire : xxx


0 commentaires