我试图形成集合字典但我的代码似乎在for循环之外工作但在其中失败。
感谢您的帮助
for n in xrange(tc):
truckgoals[n]= set()
#this works fine
truckgoals[0].add(packages[0]["target"])
for sol in feas:
print "for solutions" + str(sol)
for c in xrange(pcount):
print int(sol[c])
# this fails
truckgoals[int(sol[c])].add(packages[c]["target"])
for tur in xrange(tc):
print "goals of truck " +str(tur) + " is " + str(truckgoals[tur])
print "next"
truckgoals = [0] * tc
pass
ERROR:
...
for solutions(0, 2, 2, 3, 3, 4)
0
Traceback (most recent call last):
File "/home/mbp/workspace/Case Study/main.py", line 103, in <module>
truckgoals[int(sol[c])].add(packages[c]["target"])
AttributeError: 'int' object has no attribute 'add'
答案 0 :(得分:3)
您使用循环中的列表替换了truckgoals
:
truckgoals = [0] * tc
这将创建一个长度为tc
的列表,其中包含整数。
由于您使用xrange()
来生成字典的密钥,因此在任何情况下,它都会让我觉得一组集而不是字典是更好的选择。