如何得到与index1相关的index2之和

2024-05-14 14:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,在这里我可以得到下面的频率列表

data_list = [(33, 60), (34, 64), (34, 1500), (34, 712), (35, 52), (35, 60), (36, 52), (36, 287), (37, 52), (37, 52), (37, 52), (39, 60), (40, 643), (40, 52)]

现在我得到了

[[0, 0], [1, 0], [2, 0], [3, 12], [4, 2]]

其中第一个索引与范围ie有关

0-9, 10-19, 20-29, 30-39, 40-49

现在我想通过把count改为

count+= index2[j]

但它不再与射程相关,只是选择了前10个, 你知道为什么会这样吗

    def get_freq_list(self):
        index1,index2 = zip(*data_list)
        a_list=[]
        for i in range(int(self.__size)):
            count=0
            for j in range(i*10,(i+1)*10):
                count+=index1.count(j)
            a_list.append([i,count])
        return a_list

预期产量:

[[0, 0], [1, 0], [2, 0], [3, 3003], [4, 695]]

实际输出:

[[0, 2891], [1, 807], [2, 0], [3, 0], [4, 0]]

Tags: 函数inself列表fordatadefcount
1条回答
网友
1楼 · 发布于 2024-05-14 14:13:46
from collections import Counter

bin_to_freq = Counter()

for num, freq in data_list:
    bin_ = num // 10
    bin_to_freq[bin_] += freq

max_bin = max(bin_to_freq.keys())

def output_helper():
    for bin_ in range(max_bin + 1):
        yield [bin_, bin_to_freq[bin_]]

print(list(output_helper()))

输出:

[[0, 0], [1, 0], [2, 0], [3, 3003], [4, 695]]

相关问题 更多 >

    热门问题