列表列表上的toMap生成错误

时间:2018-06-28 19:24:25

标签: scala

给出以下示例:

val myList = List("age=21", "name=xyz", "profession=Tester", "city=cuba", "age=43", "name=abc", "profession=Programmer", "city=wellington")
val myMap = myList.map(text => text.split("=")).map(a => (a(0) -> a(1))).toMap

工作正常,返回:

myList: List[String] = List(age=21, name=xyz, profession=Tester, city=cuba, age=43, name=abc, profession=Programmer, city=wellington)
myMap: scala.collection.immutable.Map[String,String] = Map(age -> 43, name -> abc, profession -> Programmer, city -> wellington)

我想知道为什么以下只是N组值:

val myList = List("age=21", "name=xyz", "profession=Tester", "city=cuba", "age=43", "name=abc", "profession=Programmer", "city=Sydney")
val myMap = myList.grouped(4).toList.map(text => text.split("=")).map(a => (a(0) -> a(1))).toMap 

产生错误以及解决方法:

notebook:9: error: value split is not a member of List[String]
val myMap = myList.grouped(4).toList.map(text => text.split("=")).map(a => (a(0) -> a(1))).toMap

我一定在这里缺少一些基本知识。

1 个答案:

答案 0 :(得分:0)

myList.grouped(4).toList返回一个嵌套列表– List[List[String]]

要将已分组的子列表转换为Map s,

val myMap = myList.grouped(4).toList.
  map(_.map(_.split("=")).map(a => (a(0) -> a(1))).toMap)
// myMap: List[scala.collection.immutable.Map[String,String]] = List(
//   Map(age -> 21, name -> xyz, profession -> Tester, city -> cuba),
//   Map(age -> 43, name -> abc, profession -> Programmer, city -> Sydney)
// )