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

Python报错:unsupported operand type(s) for -: 'dict' and 'int' 求助

错误原因解析

报错TypeError: unsupported operand type(s) for -: 'dict' and 'int'的核心问题是:你直接对字典task_duration执行减法运算(task_duration-1),字典和整数不支持这类操作。你需要先根据对应的键提取字典中的数值,再进行整数运算。

此外代码还有两处隐性问题:

  • 嵌套字典u未初始化,直接赋值u[r][i]会触发KeyError
  • 后续循环中的元组(如(EAF,EAs))里的元素是未定义变量,需改为字符串形式(如("EAF","EAs"))
  • 部分资源/任务键不在task_duration字典中,需要处理键不存在的情况
修正后的代码示例
# 初始化嵌套字典u
u = {}

r_list = ["EAF","AOD","LF","EAs","EAd","ALs","ALd","LCs","LCd","H"]  # 资源集合
i_list = ["E","A","L","EA","AL","LC"] # 任务集合

t = [1,2,3,4,5,6,7,8,9,10,11,12] # 时隙数量
Hour=2
Price = {'Hour1': 100 ,'Hour2': 200}
R= {'EAF':2,'AOD':2,'LF':2,'EAs':1,'EAd':1,'ALs':1,'ALd':1,'LCs':1,'LCd':1,'H':1} # 资源键值对
N = {'E':1 , 'A' : 1 , 'L' : 1 , 'EA' : 1, 'AL' :1, 'LC' :1 } # 任务键值对

# 任务时长字典
task_duration={'EAF':5 , 'AOD': 4 ,'LF': 1, 'EA':1, 'AL':1, 'LC':1}

# 先初始化u的层级结构
for r in R:
    u[r] = {}
    for i in N:
        u[r][i] = []

# 设备使用逻辑
for r in R :
   for i in N:
        # 优先按资源取时长,没有则按任务取,默认值设为1
        duration = task_duration.get(r, task_duration.get(i, 1))
        u[r][i] = [-1] + [0]*(duration-1) + [1]
           
# 转移前逻辑
for i,r in [("EAF","EAs"),("AOD","ALs"),("LF","LCs")]:
       duration = task_duration.get(i, 1)
       u[r][i] = [0] + [0]*(duration-1) + [1]
   
# 转移后逻辑
for i,r in [("AOD","EAd") ,("LF","ALd")]:
         duration = task_duration.get(i, 1)
         u[r][i] = [-1] + [0]*(duration-1) + [0]

# 转移任务:转移前
for i,r in [("EA","EAs"),("AL","ALs"),("LC","LCs")]:
            duration = task_duration.get(i, 1)
            u[r][i] = [-1]*duration

# 转移任务:转移后
for i,r in [("EA","EAd"),("AL","ALd"),("LC","LCd")]:
            duration = task_duration.get(i, 1)
            u[r][i] = [1]*duration
关键修正说明
  • 提前初始化嵌套字典u,确保每个u[r][i]都有可赋值的容器
  • 使用task_duration.get(key, 默认值)安全获取时长,再执行duration-1的整数运算
  • 将所有元组内的元素改为字符串,避免未定义变量错误
  • 对不在task_duration中的键设置默认值,防止KeyError

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 21:06:24