gpt4 book ai didi

Python:将列表的批处理元素放入预定义的组中

转载 作者:太空狗 更新时间:2023-10-30 02:26:21 24 4
gpt4 key购买 nike

我有一个数值列表,例如 my_list = [1,34,56,2,7,89,12,13,10,56,43,12,78,98,5,105,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_list 很大,所以任何优化方法都会很棒!

最佳答案

您可以使用 bisect模块。

对于 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]}

关于Python:将列表的批处理元素放入预定义的组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45349916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com