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"],....]
3 Réponses :
let result = dict.map { (letter: String, digits: [String]) in
return digits.map { digit in
return [letter, digit]
}
}.reduce([]) {
$0 + $1
}
Réduire ([]) {0 $ + 1 $} CODE> peut simplement être remplacé par Réduire ([], +) code>. Au minimum, vous devez utiliser réduire (dans: []) {0 $ + = 1 $ 1)} code>, ou bien que vous obtenez une complexité de temps quadratique, voire mieux, il suffit d'utiliser .flatmap {$ 0 } code>
Celui-ci est la solution la plus courte.
let result = dict.map { dic in
dic.value.map { [dic.key : $0] }
}.reduce([], +)
Vous devez utiliser réduire (dans: []) {$ 0 + = 1 $ 1)}, sinon vous obtenez une complexité de temps quadratique, voire mieux, utilisez simplement .flatmap {$ 0}
Voici une solution qui n'a pas besoin Réduire code>:
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