【发布时间】:2020-04-06 00:28:12
【问题描述】:
为了更好地理解高阶函数,我进行了一些 Scala 练习。我有以下问题,我无法理解如何解决。我有以下清单:
val input = List((1,"a"), (1,"b"), (1,"c"), (2,"d"), (2,"y"), (2,"e"), (3, "u"), (3,"a"), (3,"d"))
我想从此列表中创建一个 Map,它将 input 列表中遇到的每个字母映射到以前与该字母在同一个元组中的所有数字的列表。示例输出:
Map(a -> List(1,3), b->List(1), c->List(1), d->List(2,3), y->List(2), e->List(2), u->List(3)
到目前为止我尝试过的是:
val output = input.groupBy(_._2)
但是这会作为输出:
Map(e -> List((2,e)), y -> List((2,y)), u -> List((3,u)), a -> List((1,a), (3,a)), b -> List((1,b)), c -> List((1,c)), d -> List((2,d), (3,d)))
有人可以帮助我了解如何解决这个问题吗?感谢任何帮助,因为我是函数式编程的新手
【问题讨论】:
-
你可以将结果映射到_._1
-
@sinanspd 你的意思是
val output = input.groupBy(_._2).map(_._1)? -
@AndriyPlokhotnyuk 你真的不会厌倦每次可以发布的吗?
-
我希望修复它,但some forces are resisting that.
标签: list scala tuples higher-order-functions