Довольно просто написать функцию от List[(K, V)]
до Map[K, List[V]]
:
def groupByKey[K, V](
pairs: List[(K, V)]
): Map[K, List[V]] =
pairs
.groupBy(_._1)
.mapValues(_.map(_._2))
, но, к сожалению, это спецификация типа коллекции c.
Я могу обобщить это, конечно,
def groupByKey[K, V](
pairs: Traversable[(K, V)]
): Map[K, Traversable[V]] =
pairs
.groupBy(_._1)
.mapValues(_.map(_._2))
, но теперь я получил Traversable
назад, и я бы очень хотел, чтобы тот же тип, который я вставил, так как groupBy
делает это для меня.