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

时间:2012-11-03 17:13:11

标签: scala map

我得到了以下对列表:

 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 -> ?)

1 个答案:

答案 0 :(得分: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()))
}