Python 依赖时间的GUROBI优化:将变量提取为字典/列表/元组

Python 依赖时间的GUROBI优化:将变量提取为字典/列表/元组,python,gurobi,Python,Gurobi,我正在处理一个与时间相关的优化问题。我有两套:U={usr1,…,usr4}和T={0,1,…,23} 我有不同的变量和约束集,一些变量设置在集合U上,一些变量设置在集合T上,大多数变量都设置在集合U上。当我使用m.getVars()检索变量值时,看起来如下所示: a[usr1] = 123 ... a[usr4] = 987 b[0] = 12 b[1] = 34 ... b[23] = 89 c[usr1,0] = 1 c[usr1,1] = 2 ... c[

我正在处理一个与时间相关的优化问题。我有两套:
U={usr1,…,usr4}
T={0,1,…,23}

我有不同的变量和约束集,一些变量设置在集合U上,一些变量设置在集合T上,大多数变量都设置在集合U上。当我使用
m.getVars()
检索变量值时,看起来如下所示:

a[usr1] = 123        
    ... 
a[usr4] = 987
b[0] = 12 
b[1] = 34 
... 
b[23] = 89
c[usr1,0] = 1
c[usr1,1] = 2
...
c[usr1,23] = 1
c[usr2,0] = 2
...
c[usr4,22] = 3
c[usr4,23] = 4
a = {usr1 : 123,
     usr2 : 456,
     usr3 : 789,
     usr4 : 987}

b = {0 : 12,
     1 : 34,
     ...
     23 : 89}

c = {usr1 : {0 : 1,
             1 : 2,
             ...}
     ...
     usr4 : { ...
             22 : 3
             23 : 4}}
有没有一种有效的方法来创建一个字典来更容易地处理结果

我要找的是这样的东西:

a[usr1] = 123        
    ... 
a[usr4] = 987
b[0] = 12 
b[1] = 34 
... 
b[23] = 89
c[usr1,0] = 1
c[usr1,1] = 2
...
c[usr1,23] = 1
c[usr2,0] = 2
...
c[usr4,22] = 3
c[usr4,23] = 4
a = {usr1 : 123,
     usr2 : 456,
     usr3 : 789,
     usr4 : 987}

b = {0 : 12,
     1 : 34,
     ...
     23 : 89}

c = {usr1 : {0 : 1,
             1 : 2,
             ...}
     ...
     usr4 : { ...
             22 : 3
             23 : 4}}
谢谢你的帮助

编辑:

我试过这个:

sols = {}
for var in m.getVars():
    name = var.VarName.split('[')[0]
    arg =var.VarName.split('[')[1].split(']')[0]
    sols[name] = {arg : var.X}
但它不起作用:
sols
字典只有变量的最后一个元素,在本例中:

sols = {'a' : {'usr4' : 987}
        'b' : {'23' : 89}
        'c' : {'usr4,23' : 4}}

我认为为每个变量创建一个。在这种情况下,不需要提取变量名和索引。相反,您可以通过dict理解直接迭代两个集合:

注意,这是一个嵌套的dict理解,用于
dic\u c