Python-使用2个键调用字典
我有一个字典,有两个键(I和j),它们与数据帧中的索引相同。 数据帧示例-不同i和j对的需求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从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