从List[(String,String)]生成Map[String, List[String]]

4
我收到了以下配对列表:
 List(("US","New York"),("England","London"),("US","Los Angeles"),("England","Manchester"),("US","Washington"))

我需要生成一个 Map[国家, 城市列表]:
Map("US" -> List("New York", "Los Angeles", "Washington"), "England" -> List("London", "Manchester"))

如果我直接使用toMap()方法,相同键的值将被删除。

目前为止的故事:

list.groupBy(el => el).map(el => el._1 -> ?)
1个回答

4

使用groupBy:

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

使用 fold:
list.foldLeft(Map.empty[String, List[String]]) { case (m, (k, v)) =>
  m.updated(k, v :: m.getOrElse(k, List()))
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接