Python - 使用2个键调用字典

时间:2017-06-28 19:52:11

标签: python dictionary pulp

我有一个包含2个键(i和j)的字典,与数据框中的索引相同。 数据帧示例 - 对不同i和j配对的要求。

i   j   Demand
0   1   13
0   2   24
0   3   68
0   4   92
0   5   72
0   6   11
0   7   12
0   8   6
0   9   4
0   10  3
1   1   0
1   2   11
1   3   15
.   .   .

i从0到9,j从1到10重复每个i。 接受预订的字典是根据这种要求建立的:

bookingsaccepted = pulp.LpVariable.dicts("bookingsaccepted",
                  ((i, j) for i, j in demand.index), lowBound=0, cat='Integer')

现在我试图在预订字典中引用值。我试图在纸浆中设置约束,以便将i = 0的所有(i,j)对相加在一起。我正在使用它,但它不起作用,我无法弄清楚原因。

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

给出错误: KeyError:(0,(0,1))

1 个答案:

答案 0 :(得分:2)

您的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 += pulp.lpSum( [bookingsaccepted[(0,index[1])] for index in demand.index] ) <= capacity