Python 纸浆-有没有办法从dict访问变量名,而不是从.variables()解析字符串版本?

Python 纸浆-有没有办法从dict访问变量名,而不是从.variables()解析字符串版本?,python,linear-programming,cplex,pulp,Python,Linear Programming,Cplex,Pulp,我正在使用PillforPython解决一些线性规划问题。目前,我能够找到的唯一方法是,在解决模型后检索变量名,就是解析pill.LpProblem().variables()方法中可用的变量名的字符串版本,该方法列出了所有使用的变量。 但是,这将返回一个字符串,该字符串的行是sometext('var1','var2')。因此,我需要解析文本以访问字符串名称,这样才能得到正确的.varValue 是否有办法以类似dict的方式访问此变量,或者解析字符串是唯一的方法?您可以直接访问变量,而无需检

我正在使用PillforPython解决一些线性规划问题。目前,我能够找到的唯一方法是,在解决模型后检索变量名,就是解析
pill.LpProblem().variables()
方法中可用的变量名的字符串版本,该方法列出了所有使用的变量。 但是,这将返回一个字符串,该字符串的行是
sometext('var1','var2')
。因此,我需要解析文本以访问字符串名称,这样才能得到正确的
.varValue


是否有办法以类似dict的方式访问此变量,或者解析字符串是唯一的方法?

您可以直接访问变量,而无需检索它们。
考虑下面的例子:

>>> import pulp
>>> x = pulp.LpVariable('x',0,3)
>>> y = pulp.LpVariable('y',0,3)
>>> prob = pulp.LpProblem('example',pulp.LpMinimize)
>>> prob+= x+y
>>> prob+= x+y >= 4
>>> prob.solve()
1           
>>> x.varValue
1.0
>>> y.varValue
3.0
其他变量容器(如字典)也是如此

>>> x_vars = pulp.LpVariable.dicts('x', range(1,6), lowBound=0, upBound=1)
>>> x_vars
{1: x_1, 2: x_2, 3: x_3, 4: x_4, 5: x_5}

使用键可以访问相关变量的值,例如,
x_vars[1]。varValue

您可以直接访问变量而无需检索它们。
考虑下面的例子:

>>> import pulp
>>> x = pulp.LpVariable('x',0,3)
>>> y = pulp.LpVariable('y',0,3)
>>> prob = pulp.LpProblem('example',pulp.LpMinimize)
>>> prob+= x+y
>>> prob+= x+y >= 4
>>> prob.solve()
1           
>>> x.varValue
1.0
>>> y.varValue
3.0
其他变量容器(如字典)也是如此

>>> x_vars = pulp.LpVariable.dicts('x', range(1,6), lowBound=0, upBound=1)
>>> x_vars
{1: x_1, 2: x_2, 3: x_3, 4: x_4, 5: x_5}

在使用键的地方,您可以访问相关变量的值,例如,
x_vars[1]。varValue

我认为您不能,尽管您可以用它们创建字典
{v.name:v.varValue for v in model.variables()}
我认为您不能,尽管您可以用它们创建字典<代码>{v.name:v.varValue for v in model.variables()}好的,我想我看到了您的做法。在本例中,我为indexs传递了元组,这导致名称是元组中每个元素中文本的某个组合,这是一个解决后要恢复的噩梦。似乎最好为变量使用非复合名称并在外部进行映射。好吧,我想我明白你的意思了。在本例中,我为indexs传递了元组,这导致名称是元组中每个元素中文本的某个组合,这是一个解决后要恢复的噩梦。似乎最好为变量使用非复合名称,并在外部进行映射。