【问题标题】:unsupported operand type(s) for -: 'dict' and 'int'- 不支持的操作数类型:\'dict\' 和 \'int\'
【发布时间】:2022-08-10 00:46:58
【问题描述】:
r = [\"EAF\",\"AOD\",\"LF\",\"EAs\",\"EAd\",\"ALs\",\"ALd\",\"LCs\",\"LCd\",\"H\"]  #sets of resources

i = [\"E\",\"A\",\"L\",\"EA\",\"AL\",\"LC\"] #sets of tasks

t = [1,2,3,4,5,6,7,8,9,10,11,12] #number of timeslots

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}#resource keys and its values

N = {\'E\':1 , \'A\' : 1 , \'L\' : 1 , \'EA\' : 1, \'AL\' :1, \'LC\' :1 } #task keys and its values

#µ Declaration

task_duration={\'EAF\':5 , \'AOD\': 4 ,\'LF\': 1, \'EA\':1, \'AL\':1, \'LC\':1}

#Equipment Usage
for r in R :
   for i in N:
        u[r][i] = [-1] +[0]*(task_duration-1)+[1]
           
#Before Transfer            
for i,r in [(EAF,EAs),(AOD,ALs),(LF,LCs)]:
       u[r][i] = [0] +[0]*(task_duration-1)+[1]
   
#After Transfer
for i,r in [(AOD,EAd) ,(LF,ALd)]:
         u[r][i] = [-1] +[0]*(task_duration-1)+[0]

#Transfer tasks:
#Before Transfer:

for i,r in [(EA,EAs),(AL,ALs),(LC,LCs)]:
            u[r][i] = [-1]*(task_duration)

#After Transfer:

for i,r in [(EA,EAd),(AL,ALd),(LC,LCd)]:
            u[r][i] = [1]*(task_duration)


错误:

TypeError                                 Traceback (most recent call last)
Input In [19], in <cell line: 20>()
     20 for r in R :
     21     for i in N:
---> 22          u[r][i] = [-1] +[0]*(task_duration-1)+[1]
     24 #Before Transfer            
     25 for i,r in [(EAF,EAs),(AOD,ALs),(LF,LCs)]:

TypeError: unsupported operand type(s) for -: \'dict\' and \'int\'

我不知道这个错误。谁能告诉我?列表中有元组。我正在尝试从字典中提取数据及其各自的键和值。使用列表对整数数据执行一些操作。然后它应该返回一个列表。例如:u[r][i] = [-1,0,0,1]。这就是我想要得到的结果。我完全不确定这个错误。如果有人知道,请告诉我。

  • task_duration 是字典,1 是数字。如何从字典中减去一个数字?在修复代码之前,请考虑预期的行为是什么。
  • task_duration 是一个 dict1 是一个整数。所以- 运算符不能在那里使用。就像你想做apple - 1一样。那没有意义。
  • 你写了task_duration={\'EAF\':5 , \'AOD\': 4 ,\'LF\': 1, \'EA\':1, \'AL\':1, \'LC\':1}。你期望{\'EAF\':5 , \'AOD\': 4 ,\'LF\': 1, \'EA\':1, \'AL\':1, \'LC\':1} - 1 的结果是什么?

标签: python list dictionary integer operands


【解决方案1】:

您究竟期望task_duration-1 的输出是什么? task_duration 是一本字典。你的意思是{k: v-1 for k, v in task_duration.items()}

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2018-11-08
    • 2015-01-17
    • 2016-09-07
    • 2022-01-03
    • 2018-12-13
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多