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

Python编写返回除数为键、对应可整除数值列表为值的字典问题

错误原因分析

  • 第一次代码错误:循环中每次判断后直接对键赋值为单个整数或空列表,覆盖了之前的结果,最终仅保留了区间最后一个数的判断结果,无法收集所有符合条件的数值。
  • 第二次代码错误:未提前为字典的每个除数键初始化空列表,第一次调用append()方法时对应键不存在,触发KeyError。
  • 第三次代码错误:dict.fromkeys(divisor)默认将所有键的值设为None,无法调用列表的append()方法;且每次判断不符合时直接赋值空列表,会清空之前已经存入的符合条件的数值。

正确实现思路

  1. 首先遍历除数列表,为每个除数在结果字典中初始化一个空列表作为初始值,避免键不存在或值类型错误的问题。
  2. 遍历[lower, upper]区间内的所有整数。
  3. 对每个整数,逐一判断是否能被当前除数整除,若能整除则追加到对应除数的列表中,不要修改不符合条件的列表。
  4. 遍历结束后返回结果字典即可。

正确代码

def create_divisor_dict(divisors, lower, upper):
    # 初始化结果字典,每个除数对应独立的空列表
    result = {d: [] for d in divisors}
    # 遍历区间内所有整数
    for num in range(lower, upper + 1):
        for d in divisors:
            if num % d == 0:
                result[d].append(num)
    return result

测试验证

调用create_divisor_dict([1,2,5],2,4),返回结果为{1:[2,3,4],2:[2,4],5:[]},和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 01:36:02