我得到了以下对列表:
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 -> ?)
答案 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()))
}