这行很好,但不适用于for循环

时间:2014-04-21 08:39:25

标签: python

我试图形成集合字典但我的代码似乎在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'

1 个答案:

答案 0 :(得分:3)

您使用循环中的列表替换了truckgoals

truckgoals = [0] * tc

这将创建一个长度为tc的列表,其中包含整数。

由于您使用xrange()来生成字典的密钥,因此在任何情况下,它都会让我觉得一组集而不是字典是更好的选择。