Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-使用2个键调用字典_Python_Dictionary_Pulp - Fatal编程技术网

Python-使用2个键调用字典

Python-使用2个键调用字典,python,dictionary,pulp,Python,Dictionary,Pulp,我有一个字典,有两个键(I和j),它们与数据帧中的索引相同。 数据帧示例-不同i和j对的需求 i从0到9,j从1到10重复每个i。 根据这一需求编制了一本接受预订的词典: bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted", ((i, j) for i, j in demand.index), lowBound=0, cat='Integer') 现在我正试图引用bookings公认词典中

我有一个字典,有两个键(I和j),它们与数据帧中的索引相同。 数据帧示例-不同i和j对的需求


i从0到9,j从1到10重复每个i。 根据这一需求编制了一本接受预订的词典:

bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted",
                  ((i, j) for i, j in demand.index), lowBound=0, cat='Integer')
现在我正试图引用bookings公认词典中的值。我试图在palp中设置一个约束,以便将I=0的所有(I,j)对求和在一起。我正在使用这个,但它不起作用,我不知道为什么

model += pulp.lpSum( [bookingsaccepted[(0,j)] for j in demand.index] ) <= capacity

model+=pill.lpSum([bookingsaccepted[(0,j)]用于j in demand.index])看起来像您的
demand.index
由成对的
(i,j)
组成。看这里,你迭代了
demand.index
,它带来了i和j:

bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted",
              ((i, j) for i, j in demand.index), lowBound=0, cat='Integer')
因此,当您迭代
demand.index
时,您会得到一个元组
(i,j)
。如果只需要获取
j
,请执行以下操作:

model += pulp.lpSum( [bookingsaccepted[(0,j)] for i, j in demand.index] ) <= capacity

model+=pill.lpSum([bookingsaccepted[(0,j)]for i,j in demand.index])从上面的帖子中可以看到
demand.index
返回元组,所以您只需要获得第二项的唯一集合<代码>模型+=纸浆.lpSum([bookingsaccepted[(0,j)]对于集合中的j(b)对于a,b对于需求中的b.index])为什么该代码不提供相同的结果:“模型+=bookingsaccepted[(0,1)]+bookingsaccepted[(0,2)]+bookingsaccepted[(0,3)]+bookingsaccepted[(0,4)]+bookingsaccepted[(0,5)]\+bookingsaccepted[(0,6)]\+bookingsaccepted[(0,7)]bookingsaccepted[(0,8)]bookingsaccepted[(0,9)]bookingsaccepted[(0,10)]lpSum(…)之间有完全不同的含义,
lpSum(…)也给出不同的结果,而不是:'对于需求中的i,j.index:if i==0:model+=pulp.lpSum(bookingsaccepted[i,j])
pulpsum.lpSum(…)谢谢。起作用的代码是:
model+=纸浆.lpSum([bookingsaccepted[(i,j)],用于需求中的i,j.index,如果i==0])
model += pulp.lpSum( [bookingsaccepted[(0,j)] for i, j in demand.index] ) <= capacity
model += pulp.lpSum( [bookingsaccepted[(0,index[1])] for index in demand.index] ) <= capacity