我在长程序中遇到代码块的这部分问题
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是一个dict而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条件存在的行中。
对此问题的任何帮助表示赞赏。
答案 0 :(得分:2)
将循环中的i
重命名为不同的内容,例如:
print GInfo[i].DualVariables, "\n", GInfo[i].Components
for j in GInfo[i].Components:
...
答案 1 :(得分:0)
我想这取决于你想做什么:
if tuple(i[0]) not in GInfo.DualVariables.keys():
...
或者
if GInfo.DualVariables[tuple(i[0])] != i[1]:
...
这些中的任何一个都符合您的要求吗?