【问题标题】:Scalding flatMap tuple containing list缩放包含列表的 flatMap 元组
【发布时间】:2016-05-16 17:50:30
【问题描述】:

我有以下输入元组想要进行平面映射:(String, List[String])

例如输入:

("a", ["1", "2"])
("b", ["3", "4"])

需要的输出:

("a", "1")
("a", "2")
("b", "3")
("b", "4")

在 Scalding/Scala 中是否有一种优雅的方式来做到这一点?

【问题讨论】:

    标签: scala scalding


    【解决方案1】:

    您可以使用多行 for ... yield 表达式来做到这一点:

    for {
      (a, bs) <- tupleList
      b <- bs
    } yield (a, b)
    

    【讨论】:

      【解决方案2】:

      可能不是最好的解决方案,但级联地图然后平展结果是我能想到的最好的。

      关于 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 , _) })
      

      【讨论】:

      • 如果你是flatMap就不需要展平。
      猜你喜欢
      • 1970-01-01
      • 2020-12-25
      • 2021-10-28
      • 2016-09-25
      • 2019-12-09
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-04-24
      相关资源
      最近更新 更多