2012-10-18 10 views
6

Qual è il modo migliore per convertire un List[String, Int] A a List[Int, String] B. Volevo utilizzare la funzione mappa che sarebbe scorrere tutte le voci nella mia lista a e poi restituire una nuova lista B però ogni volta che applico la funzione mappa su lista a si lamenta numero di circa errato di argomentiScala - Come convertire da Elenco di tuple di tipo (A, B) per digitare (B, A) utilizzando la mappa

val listA:List[(String, Int)] = List(("graduates", 20), ("teachers", 10), ("students", 300)) 
val listB:List[(Int, String)] = listA.map((x:String, y:Int) => y, x) 

Qualche suggerimento? Grazie

risposta

7

È necessario utilizzare la corrispondenza del modello per ottenere gli elementi di una coppia. Giuro una domanda come questa è stato chiesto solo pochi giorni fa ....

listA.map{case (a,b) => (b,a)} 
+1

+1: La risposta di Jean-Philippe dà senza dubbio il migliore (più breve e più efficiente) modo di fare il lavoro, ma questa risposta dà a linuxlewis gli indizi mancanti per capire perché il tentativo fallito fallì. – AmigoNico

+0

evviva Kim, non ha capito la prima domanda nelle mie ricerche – cduggan

17

ne dite di questo:

val listB = listA.map(_.swap) 
Problemi correlati