You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Python字典按键划分到等间隔区间并整理对应值

Python实现字典按键固定间隔分区的优雅方案

实现思路

  • 先根据设定的步长计算所有需要覆盖的区间左边界,保证空区间也不会遗漏
  • 用整数除法快速计算每个键所属的区间位置,逻辑通用适配任意步长
  • 先初始化所有区间的默认值,再遍历原字典填充对应区间的数值,避免遗漏无值区间

代码实现

def group_dict_by_interval(original_dict: dict, step: int, fill_value=0) -> dict:
    if not original_dict:
        return {}
    # 计算区间起止范围
    min_key = min(original_dict.keys())
    max_key = max(original_dict.keys())
    min_interval = (min_key // step) * step
    max_interval = (max_key // step) * step
    # 初始化结果字典,所有区间先填充默认值
    result = {
        interval: [fill_value]
        for interval in range(min_interval, max_interval + step, step)
    }
    # 填充实际存在的数值
    for key, value in original_dict.items():
        current_interval = (key // step) * step
        if result[current_interval] == [fill_value]:
            result[current_interval] = [value]
        else:
            result[current_interval].append(value)
    return result

# 测试示例
if __name__ == "__main__":
    test_dict = {0: 1, 10: 3, 12: 2, 19: 4, 35: 5}
    # 步长10,默认填充0
    print(group_dict_by_interval(test_dict, step=10))
    # 输出:{0: [1], 10: [3, 2, 4], 20: [0], 30: [5]}

    # 自定义填充None的情况
    print(group_dict_by_interval(test_dict, step=10, fill_value=None))
    # 输出:{0: [1], 10: [3, 2, 4], 20: [None], 30: [5]}

方案优势

  • 符合PEP8开发规范,添加了类型提示,可读性和可维护性高
  • 通用程度高,步长、填充值都支持自定义,不需要硬编码区间范围
  • 时间复杂度为O(n),n为原字典的键值对数量,性能表现优异
  • 自动覆盖所有区间,不会遗漏无值的区间,完全匹配需求输出格式

内容的提问来源于stack exchange,提问作者DevBabai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 01:36:06