2012-11-03 201 views
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(),則會刪除具有相同鍵的值的問題。使用GROUPBY

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

回答

4

迄今故事

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())) 
} 
相關問題