我有一系列像下面这样的元组。文件“abc”和“xyz”中出现“x”和“y”的数量
Seq(("abc", Map("x" -> 1, "y" -> 2)), ("xyz", Map("x" -> 2, "y" -> 1)))
如何从上面的序列中创建如下所示的输出。
Seq(("x", Map("abc" -> 1, "xyz" -> 2)), ("y", Map("abc" -> 2, "xyz" -> 1)))
答案 0 :(得分:3)
这是一种可能性:
val s = Seq(
("abc", Map("x" -> 1, "y" -> 2)),
("xyz", Map("x" -> 2, "y" -> 1))
)
val t = (for {
(x, yvs) <- s
(y, v) <- yvs
} yield (y, (x, v)))
.groupBy(_._1)
.mapValues(_.unzip._2.toMap)
println(t)
这会产生(直到未分类键的随机重新排序):
Map(
x -> Map(abc -> 1, xyz -> 2),
y -> Map(abc -> 2, xyz -> 1)
)