我有以下输入元组我想flatMap:(String, List[String])
E.G。输入:
("a", ["1", "2"])
("b", ["3", "4"])
需要输出:
("a", "1")
("a", "2")
("b", "3")
("b", "4")
在Scalding / Scala中有优雅的方法吗?
答案 0 :(得分:4)
您可以使用多行for ... yield
表达式执行此操作:
for {
(a, bs) <- tupleList
b <- bs
} yield (a, b)
答案 1 :(得分:1)
可能不是最好的解决方案,但级联地图然后平整结果是我能想到的最好的。
关于FP的有趣之处在于你可以用非常不同的方式做同样的事情。希望有人发布不同的解决方案val input = List( ("a", List("1", "2")), ("b", List("3","4")))
val output = input.map(it => it._2.map { (it._1, _)}).flatten
如上所示,输出可以更改为
input.flatMap(tuple => tuple._2.map { (tuple._1 , _) })