【发布时间】:2016-01-05 23:51:39
【问题描述】:
有两个列表:
val list1 : List[List[(String, String)]] = List(List("1" -> "a" , "1" -> "b"))
//> list1 : List[List[(String, String)]] = List(List((1,a), (1,b)))
val list2 : List[List[(String, String)]] = List(List("2" -> "a" , "2" -> "b"))
//> list2 : List[List[(String, String)]] = List(List((2,a), (2,b)))
//Expecting
val toConvert = List(List(Map("1" -> "a" , "2" -> "b"), Map("1" -> "b" , "2" -> "a")))
正在尝试将这些列表转换为类型:
List[List[scala.collection.immutable.Map[String,String]]] = Lis
//| t(List(Map(1 -> a, 2 -> b), Map(1 -> b, 2 -> a)))
使用此代码:
val ll = list1.zip(list2).map(m => List(m._1.toMap , m._2.toMap))
但地图条目不见了:
List[List[scala.collection.immutable.Map[String,String]]] = List(List(
//| Map(1 -> b), Map(2 -> b)))
如何将 list1,list2 转换为包含值的类型 List[List[scala.collection.immutable.Map[String,String]]]:(List(Map(1 -> a, 2 -> b), Map(1 -> b, 2 -> a)))?
更新:
逻辑:Map("1" -> "a" , "2" -> "b")
使用 zip 函数组合每个列表:
val p1 : List[(List[(String, String)], List[(String, String)])] = list1.zip(list2);
将新创建的 List 的每个元素转换为 Map,然后添加到新创建的 List 中:
val p2 = p1.map(m => List(m._1.toMap , m._2.toMap))
【问题讨论】:
-
获取第一张地图背后的逻辑是什么:
Map("1" -> "a" , "2" -> "b")? -
@Filippo 请查看更新,这是您的意思吗?数据背后没有真正的意义,我只是把收集方法当作一种学习练习。
-
对发布的答案有何评论?
-
@Filippo 我接受了你的回答...