Come convertire un Set ("a", "b", "c") in una mappa ("a" -> 1, "b" -> 2, "c" -> 3)? Penso che dovrebbe funzionare con toMap.Scala Converti Imposta su Mappa
risposta
zipWithIndex
è probabilmente quello che stai cercando. Prenderà la tua collezione di lettere e creerà una nuova collezione di tuple, abbinando il valore alla posizione nella raccolta. Si dispone di un requisito in più anche se - sembra che le vostre posizioni iniziano con 1, piuttosto che 0, quindi avrete bisogno di trasformare tali tuple:
Set("a","b","c")
.zipWithIndex //(a,0), (b,1), (c,2)
.map{case(v,i) => (v, i+1)} //increment each of those indexes
.toMap //toMap does work for a collection of Tuples
Una considerazione in più - Imposta non conservano la posizione. Considerare l'utilizzo di una struttura come Elenco se si desidera che la posizione sopra riportata funzioni in modo coerente.
Questo è quello che volevo. Grazie. –
toMap funziona solo se l'insieme degli oggetti sono coppie chiave/valore (ad esempio Set (("a", 1), ("b", 2), ("c", 3))). Per ottenere ciò che si desidera, utilizzare zipWithIndex:
scala> Set("a","b","c") zipWithIndex
res5: scala.collection.immutable.Set[(java.lang.String, Int)] = Set((a,0), (b,1), (c,2))
EDIT: o (come in te domanda iniziale :))
scala> Set("a","b","c") zip (1 to 3) toMap
EDIT2: Duh, ho dimenticato il toMap alla fine!
Qui è un'altra soluzione che utilizza una Stream
di tutti i numeri naturali a partire dal 1 da zip con il Set
:
scala> Set("a", "b", "c") zip Stream.from(1) toMap
Map((a,1), (b,2), (c,3))
+1, questa è la migliore risposta qui. – missingfaktor
Questo potrebbe anche funzionare:
(('a' to 'c') zip (1 to 3)).toMap
- 1. Scala - Converti le chiavi da una mappa in minuscolo?
- 2. Converti swift nativo Imposta nell'array
- 3. Scala Mappa conversione
- 4. Scala Mappa foreach
- 5. scala mappa personalizzata
- 6. Scala: mappa a Mappa per elenco tuple
- 7. Scala disegnabile - impostaImageLevel imposta la scala?
- 8. Tipo di mappa Scala imprevisto
- 9. Scala: Converti org.w3c.dom.Document in scala.xml.NodeSeq
- 10. Converti oggetto Scala in XML
- 11. Scala mismatch durante l'associazione Mappa
- 12. Mappa concorrente/foreach in scala
- 13. Mappa distribuita in Scala Spark
- 14. Scala foreach e mappa inizializzatori
- 15. Scala Array mappa restituisce ArraySeq
- 16. stringa Converti numero intero usando la mappa()
- 17. Converti mappa in JSON utilizzando Jackson
- 18. Converti mappa in bundle in android
- 19. Converti mappa hash in array 2D
- 20. Mappa contro FlatMap su String
- 21. Imposta limiti mappa con riempimento diverso
- 22. Converti una QImage in scala di grigi
- 23. imposta la scala di colori per heatmap
- 24. Indicatori mappa scala con Zoom, Android
- 25. Scala Iterator con Mappa e Per
- 26. Converti un'immagine in scala di grigi
- 27. Scala - converti matrice [stringa] in matrice [doppia]
- 28. Creazione e accumulando una Mappa di Mappa di Mappa ... in scala
- 29. sintassi del metodo della mappa Scala
- 30. Accrescimento del valore aggiunto Scala mappa
Vuoi b per mappare a 2 perché è il secondo nel set? O perché è la seconda lettera dell'alfabeto? I set non sono ordinati, come hanno sottolineato altri poster, quindi il primo non funzionerà. –