如何执行以下操作?
将地图K1->(v1,v2), K2->(v1,v2)
转换为K1->v1,K1->v2,K2->v1,K2->V2
从Map[String,(String, String)]
到List[Map[String,String]]
:
val mss = Map("s"->("a","b"), "t"->("a","c"))
mss.toList.flatMap{case (k,(a,b)) => List((k,a),(k,b))}.map(Map(_))
将每个结果元组转换为Map
的最后一步是毫无意义的。只使用一个key-> value对的Map
有什么用?
你应该首先将你的Map
转换为List
或Seq
(如果你想要更通用的类型)然后你可以使用flatMap
。 toList
的例子:
val map = Map("a" -> ("1", "2"), "b" -> ("3", "4"))
map.toList.flatMap {
case (k, (v1, v2)) => List(k -> v1, k -> v2)
}
// res0: List[(String, String)] = List((a,1), (a,2), (b,3), (b,4))
首先,您的值映射到元组列表,因此中间结果将是:
List(List((a,1), (a,2)), List((b,3), (b,4)))
然后它变平,你得到元组列表:
List((a,1), (a,2), (b,3), (b,4))