我有两个维度数据存储在一个排序的元组列表中,如下所示:
data = [(0.1,100), (0.13,300), (0.2,10)...
每个元组中的第一个值,即 X 值,仅在元组列表中出现一次。换句话说,0.1 等只能有一个值。
然后我有一个排序的桶列表。桶定义为包含范围和 id 的元组,如下所示:
buckets = [((0,0.14), 2), ((0.135,0.19), 1), ((0.19,0.21), 2), ((0.19,0.24), 3)...
范围是相对于 X 轴的。所以,id 2 上面有两个桶,id 1 和 3 分别只有一个。id 2 的第一个桶的范围是 0 到 0.14。请注意,存储桶可以重叠。
所以,我需要一种算法,将数据放入桶中,然后将分数相加。对于上面的数据,结果将是:
1:0
2:410
3:10
注意每条数据是如何被与 id 2 关联的存储桶捕获的,因此它得到 score 100+300+10=410
。
我该如何编写算法来做到这一点?