2012-10-18 16 views
6

Jaki jest najlepszy sposób konwersji List[String, Int] A na List[Int, String] B. Chciałem użyć funkcji mapy, która będzie iterację wszystkich elementów w moim wykazie a, a następnie powrócić nową listę B jednak ilekroć zastosować funkcję mapy na liście a ona narzeka na złą liczbę argumentówScala - Jak przekonwertować z listy krotek typu (A, B) do typu (B, A) przy użyciu mapy

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) 

Wszelkie sugestie? Dzięki

Odpowiedz

7

Musisz użyć dopasowania do wzorca, aby uzyskać elementy pary. Przysięgam pytanie jak to poproszono zaledwie kilka dni temu ....

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

+1: Jean-Philippe odpowiedź daje niewątpliwie najlepszy (najkrótszy i najbardziej wydajny) sposób, aby wykonać zadanie, ale ta odpowiedź daje linuxlewis brakujące wskazówki, aby zrozumieć, dlaczego nieudana próba nie powiodła się. – AmigoNico

+0

okrzyki Kim, nie złapałem wcześniejszego pytania w moich wyszukiwaniach – cduggan

17

Jak o tym:

val listB = listA.map(_.swap) 
Powiązane problemy