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 に答える