散布要映射的键映射到scala中单个元素的键

时间:2020-02-28 23:33:12

标签: list scala dictionary

我在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")

有什么建议吗?预先感谢!

2 个答案:

答案 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))

谢谢大家,对这个问题感到抱歉。

相关问题