Aru*_*yam 1 scala tuples accumulator
说我有一个元组列表:
val ranges= List((1,4), (5,8), (9,10))
Run Code Online (Sandbox Code Playgroud)
和一个数字列表
val nums = List(2,2,3,7,8,9)
Run Code Online (Sandbox Code Playgroud)
我想从范围中的元组制作一个映射到nums中给定数字落入该元组间隔的次数.
输出:
Map ((1,4) -> 3, (5,8) -> 2, (9,10) -> 1)
Run Code Online (Sandbox Code Playgroud)
什么是Scala中最好的方法
我一直在尝试使用for循环并保持一个计数器,但我不尽如人意.任何帮助将非常感谢.
最好的祝福
像这样的东西:
val ranges = List((1, 4), (5, 8), (9, 10))
val nums = List(2, 2, 3, 7, 8, 9)
val occurences = ranges.map { case (l, r) => nums.count((l to r) contains _) }
val map = (ranges zip occurences).toMap
println(map) // Map((1,4) -> 3, (5,8) -> 2, (9,10) -> 1)
Run Code Online (Sandbox Code Playgroud)
基本上它首先计算出现次数,[3,2,1].从那里可以很容易地构建地图.它计算出现次数的方式是:
nums中包含多少个数字?编辑:不知道为什么这个答案会被低估,也许我不知何故误解了这个问题.