Удалить слова из кортежей после группы по - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть список в такой форме:

List( (a,1), (a,2), (a,3), (b,2), (b,4) )

Я использовал группу по

list.groupBy(x => x._1)

Это привело к карте:

Map(a->List((a,1), (a,2), (a,3)), b->List((b,2), (b,4)))

Но Я хочу вывод следующим образом:

Map(a->List(1,2,3), b->List(2,4))

Как это сделать?

1 Ответ

2 голосов
/ 14 февраля 2020

Scala 2.13 введено groupMap

list.groupMap(_._1)(_._2)   // res0: scala.collection.immutable.Map[String,List[Int]] = Map(a -> List(1, 2, 3), b -> List(2, 4))

, что является кратким способом записи в Scala 2.12

list
  .groupBy { case (key, value) => key } 
  .mapValues { (values: List[(String, Int)]) => 
    values.map { case (key, value ) => value } 
  }

Как примечание, если вы новичок в Scala, рассмотрите следующие дружественные для новичков ресурсы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...