我在Scala中有这张地图:
var m = Map(1 -> List("A","B","C","D"), 2 -> List("F","G","H","I"))
,我要对此进行转换:
var m = Map(1->"A", 1->"B", 1->"C", 1->"D", 2->"F",2->"G",2->"H",2->"I")
有什么建议吗?预先感谢!
答案 0 :(得分:1)
这应该给您您想要的东西:
val map = Map(1 -> List("A","B","C","D"), 2 -> List("F","G","H","I"))
val result =
map.iterator.flatMap {
case (key, values) =>
values.map(value => key -> value)
}.toList
// result: List[(Int, String)] = List((1,A), (1,B), (1,C), (1,D), (2,F), (2,G), (2,H), (2,I))
答案 1 :(得分:0)
实际上没有解决方案,因为地图不能有重复的键。最接近的方法是这样的:
m.map {case (k, v) => v.map((k,_))}.flatten
res215: scala.collection.immutable.Iterable[(Int, String)] = List((1,A), (1,B), (1,C), (1,D), (2,F), (2,G), (2,H), (2,I))
谢谢大家,对这个问题感到抱歉。