在Scala中将Map展平为对(键,值)[已关闭]

ecbunoof  于 2023-01-02  发布在  Scala
关注(0)|答案(2)|浏览(130)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
假设我在scala中构建了以下Map:

val map = Map.empty[String, Seq[String]] + ("A" -> ("1", "2", "3", "4"), "B" -> ("2", "3"), "C" -> ("3", "4"))

我的输出应该是一个由单个键和值对组成的序列。也就是说,它应该如下所示:

[("A", "1"), ("A", "2"), ("A", "3"), ("A", "4"), ("B", "2"), ("B", "3"), ("B", "2"), ("C", "3"),
("C", "4")]

我如何使用flatMap获得此信息?

xdyibdwo

xdyibdwo1#

我猜您最初的目标是创建下一个Map(注意在Map中添加了Seq s):

val map = Map.empty[String, Seq[String]] + ("A" -> Seq("1", "2", "3", "4"), "B" -> Seq("2", "3"), "C" -> Seq("3", "4"))

然后,您将能够轻松地转换它轻松与:

val result = map.toSeq.flatMap { case (k, v) => v.map((k, _)) }
jmo0nnb3

jmo0nnb32#

此外,您可以直接创建Map,而无需附加到空Map。

val map = Map("A" -> Seq("1", "2", "3", "4"), "B" -> Seq("2", "3"), "C" -> Seq("3", "4"))

相关问题