如何将Python函数计算结果按10为区间智能分箱?
按10为区间对求和结果分箱的智能实现方法
我需要实现一个函数,先对输入的可迭代对象执行求和计算,再将计算结果按每10为一个区间分箱(比如<10、10-19、20-29这类区间)。目前我用的方法比较笨拙:创建字典枚举所有可能的结果对应的分箱,代码如下:
def total(iterable): dict = {36: '30 - 40' , 6 : '< 10'} total = dict[sum(iterable)] return total candidates = [[11,12,13],[1,2,3]] for iterable in candidates: output = str(total(iterable)) print (output)
更智能的实现方式
不用费劲维护枚举字典,通过简单的数学计算就能动态生成对应的分箱标签,不管求和结果是多大的数都能适配,还能避免没覆盖到数值导致的报错:
代码示例
def total(iterable): sum_val = sum(iterable) if sum_val < 10: return '< 10' # 整数除法取整后乘10,得到区间起始值 start = (sum_val // 10) * 10 # 按照示例格式生成区间标签 return f'{start} - {start + 10}' candidates = [[11,12,13],[1,2,3], [25, 3], [100, 5]] for iterable in candidates: print(total(iterable))
方法优势
- 通用性强:不管求和结果是几位数,都能自动生成对应的区间标签,不用提前枚举所有可能
- 易维护:如果以后要调整区间大小(比如改成每20分箱),只需要修改除法的除数和区间结束值即可
- 避免错误:不会出现因为字典里没包含某个求和结果而抛出
KeyError的问题
内容的提问来源于stack exchange,提问作者Mark K
相关产品推荐
相关产品推荐

