4

我得到了以下配对列表:

 List(("US","New York"),("England","London"),("US","Los Angeles"),("England","Manchester"),("US","Washington"))

我需要生成一个Map[Country, List[Cities]]

Map("US" -> List("New York", "Los Angeles", "Washington"), "England" -> List("London", "Manchester"))

如果我toMap()直接使用具有相同键的值的问题将被删除。

到目前为止的故事:

list.groupBy(el => el).map(el => el._1 -> ?)
4

1 回答 1

4

使用 groupBy:

list.groupBy(_._1).mapValues(_.map(_._2))

使用折叠:

list.foldLeft(Map.empty[String, List[String]]) { case (m, (k, v)) =>
  m.updated(k, v :: m.getOrElse(k, List()))
}
于 2012-11-03T17:18:01.317 回答