如何执行以下操作?
将地图K1->(v1,v2), K2->(v1,v2)
转换为K1->v1,K1->v2,K2->v1,K2->V2
答案 0 :(得分:1)
要从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
的最后一步是毫无意义的。 Map
只有一个键->值对的用途是什么?
答案 1 :(得分:0)
您应该首先将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))