2012-10-18 9 views
6

Was ist der beste Weg, um eine List[String, Int] A in List[Int, String] B zu konvertieren. Ich wollte die Kartenfunktion verwenden, die es beschwert sich über falsche Anzahl von Argumenten durch alle Elemente in meiner Liste A würde durchlaufen und dann eine neue Liste B jedoch zurückkehren, wenn ich die Kartenfunktion auf der Liste A geltenScala - Wie konvertiert man aus Liste der Tupel des Typs (A, B) in Typ (B, A) mit Hilfe der Karte

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) 

Irgendwelche Vorschläge? Danke

Antwort

7

Sie müssen Mustervergleich verwenden, um die Elemente eines Paares zu erhalten. Ich schwöre, eine Frage wie diese vor wenigen Tagen wurde gefragt ....

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

+1: Jean-Philippe Antwort gibt wohl die beste (kürzeste und effizienteste), um diese Aufgabe zu erledigen, aber diese Antwort gibt linuxlewis die fehlenden Hinweise, um zu verstehen, warum der gescheiterte Versuch gescheitert ist. – AmigoNico

+0

Prost Kim, nicht die frühere Frage in meinen Recherchen – cduggan

17

Wie wäre es damit:

val listB = listA.map(_.swap) 
Verwandte Themen