Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计数给定范围内数字的出现次数_Python_Python 3.x_List_Dictionary - Fatal编程技术网

Python 计数给定范围内数字的出现次数

Python 计数给定范围内数字的出现次数,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我的目标是将num_lst中的数字频率计算到num_range中的范围。并将输出显示到字典,其中key是范围,value是num_lst范围内数字的频率 我看过很多帖子,大多数都是用numpy或熊猫来解决的。然而,我想找到传统的方法来解决这个问题,而不使用np和pd。谁能告诉我正确的方向吗 num_range = [(0.0, 20.0), (20.0, 40.0), (40.0, 60.0), (60.0, 80.0), (80.0, 100.0)] num_lst = [x for x in

我的目标是将num_lst中的数字频率计算到num_range中的范围。并将输出显示到字典,其中key是范围,value是num_lst范围内数字的频率

我看过很多帖子,大多数都是用numpy或熊猫来解决的。然而,我想找到传统的方法来解决这个问题,而不使用np和pd。谁能告诉我正确的方向吗

num_range = [(0.0, 20.0), (20.0, 40.0), (40.0, 60.0), (60.0, 80.0), (80.0, 100.0)]
num_lst = [x for x in range(100)]

#Preferred output
frequency_dict ={(0.0, 20.0):20, (20.0, 40.0):20, 
                 (40.0, 60.0):20,(60.0, 80.0):20, 
                 (80.0, 100.0):20}

如果所有范围都使用可以利用集合重叠的整数,
seta.intersection(setb)
给出两个集合之间的所有公共元素,那么其中的
len
表示有多少个元素是公共的:

num_range = [(0, 20), (20, 40), (40, 60), (60, 80), (80, 100)]
num_lst = set(range(100))

frequency_dict = {}
for a,b in num_range:
    frequency_dict[a,b] = len(num_lst.intersection(range(a,b)))

print(frequency_dict)
在更一般的情况下,您可以在范围上使用嵌套循环,并查看它是否位于每个类别之间:

num_range = [(0, 20), (20, 40), (40, 60), (60, 80), (80, 100)]
num_lst = range(100)

frequency_dict = dict.fromkeys(num_range, 0) # initial dictionary has 0 in all entries
for a,b in num_range:
    for i in num_lst:
        if a<=i<b:
            frequency_dict[a,b] += 1

print(frequency_dict)
num_range=[(0,20)、(20,40)、(40,60)、(60,80)、(80100)]
数值=范围(100)
frequency_dict=dict.fromkeys(num_range,0)#初始字典中的所有条目都为0
对于数量范围内的a、b:
对于数量中的i:

如果aif范围总是有一个0的步长,那么它不就是
num\u range[I][1]-num\u range[I][0]
?或者,我想你们想要一个通用的解决方案,当范围可能超出范围或者范围有一个台阶时?你们尝试过什么,你们如何定义边界?
frequency_dict = {(a,b):sum(a<=i<b for i in num_lst) for a,b in num_range}