2

我在一个长程序中遇到了这部分代码块的问题

print GInfo[i].DualVariables, "\n", GInfo[i].Components
for i in GInfo[i].Components:
  print i, tuple(i)
  if (tuple(i) not in GInfo[i].DualVariables):
    ------ Do Something ---------

这里 GInfo 是 GraphInfo 类的对象

class GraphInfo:
  def __init__(self):
    self.G = nx.Graph()
    self.Components = []
    self.ActiveStatus = {}
    self.ContainsCommon = {}
    self.p = {}
    self.Edges = []
    self.DualVariables = {}
    self.Bound = {}

可以看到 DualVariables 是一个字典,而 Components 是一个列表。代码示例实例的输出如下:

{(0,): 0.0, (1,): 31.5, (2,): 31.5, (8,): 31.5, (3,): 31.5, (4,): 31.5, (5,): 31.5,(6,): 31.5, (7,): 31.5} 
[[8, 7], [0], [1], [2], [3], [4], [5], [6]]
[8, 7] (8, 7)

其次是错误

TypeError: list indices must be integers, not list

在存在 if 条件的行中。

对此问题的任何帮助表示赞赏。

4

2 回答 2

2

在循环中重命名i为不同的名称,例如:

print GInfo[i].DualVariables, "\n", GInfo[i].Components
for j in GInfo[i].Components:
  ...
于 2013-02-15T20:14:38.943 回答
0

我想这取决于你想要做什么:

if tuple(i[0]) not in GInfo.DualVariables.keys():
    ...

或者可能

if GInfo.DualVariables[tuple(i[0])] != i[1]:
    ...

这些中的任何一个都适合您想要做的事情吗?

于 2013-02-15T20:21:07.537 回答