Python:将列表中的元素批处理为预定义的组
我有一个数值列表,例如Python:将列表中的元素批处理为预定义的组,python,list,sorting,dictionary,grouping,Python,List,Sorting,Dictionary,Grouping,我有一个数值列表,例如my_list=[1,34,56,2,7,89,12,13,10,56,43,12,78,98,5105,1,2]和一组预定义的组: group1 - values between 0 and 5, group2 - values between 6 and 12, group3 - values between 13 and 25, group4 - values between 26 and 60, group5 - values between 61 and inf,
my_list=[1,34,56,2,7,89,12,13,10,56,43,12,78,98,5105,1,2]
和一组预定义的组:
group1 - values between 0 and 5,
group2 - values between 6 and 12,
group3 - values between 13 and 25,
group4 - values between 26 and 60,
group5 - values between 61 and inf,
我希望获得以下资料:
{1: [1,2,1,2,5],
2: [7,12,10,12],
3: [13],
4: [34,56,56,43],
5: [89,78,98,105]}
一种方法是创建for循环,并检查每个元素的if-elif-else条件,如下所示:
for element in my_list:
if 0 <= element <= 5:
groups[1].append(element)
elif 6 <= element <= 12:
groups[2].append(element)
elif ...
my_列表中元素的:
如果0,您可以使用该模块
对于my_list
中的每个项目,我们将在groups
列表中找到它可以容纳的索引,该索引将作为组号
>>> import bisect
>>> groups = [0, 6, 13, 26, 61]
>>> output = {}
>>> for x in my_list:
... index = bisect.bisect_right(groups, x)
... output.setdefault(index, []).append(x)
...
>>>
>>> output
{1: [1, 2, 5, 1, 2],
4: [34, 56, 56, 43],
2: [7, 12, 10, 12],
5: [89, 78, 98, 105],
3: [13]}