Python 这一行单独工作很好,但在for循环中不起作用

Python 这一行单独工作很好,但在for循环中不起作用,python,Python,我试图建立一个集合字典,但我的代码似乎在for循环之外工作,但在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):

我试图建立一个集合字典,但我的代码似乎在for循环之外工作,但在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
错误:

...
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、2、2、3、3、4)
0
回溯(最近一次呼叫最后一次):
文件“/home/mbp/workspace/Case Study/main.py”,第103行,在
truckgoals[int(sol[c])].添加(包[c][“target”])
AttributeError:“int”对象没有属性“add”

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

这将创建一个包含整数的长度
tc
列表


由于您正在使用
xrange()
为字典生成键,因此在我看来,在任何情况下,集合列表而不是字典都是一个更好的选择。

您将
truckgoals
替换为循环中的列表:

这将创建一个包含整数的长度
tc
列表


由于您正在使用
xrange()
为字典生成键,因此在我看来,在任何情况下,集合列表而不是字典都是一个更好的选择。

您将
truckgoals
替换为循环中的列表:

这将创建一个包含整数的长度
tc
列表


由于您正在使用
xrange()
为字典生成键,因此在我看来,在任何情况下,集合列表而不是字典都是一个更好的选择。

您将
truckgoals
替换为循环中的列表:

这将创建一个包含整数的长度
tc
列表


由于您正在使用
xrange()
为您的字典生成键,因此在我看来,无论如何,用集合列表而不是字典将是一个更好的选择。

感谢您的帮助catch@Kartopukus当前位置你为什么要把整本字典都清理掉?您是否要清除集合?至少,将其重置为具有相同键和空集的字典。更好的方法是使用
defaultdict(set)
实例,并根据需要创建值。感谢您的帮助catch@Kartopukus当前位置你为什么要把整本字典都清理掉?您是否要清除集合?至少,将其重置为具有相同键和空集的字典。更好的方法是使用
defaultdict(set)
实例,并根据需要创建值。感谢您的帮助catch@Kartopukus当前位置你为什么要把整本字典都清理掉?您是否要清除集合?至少,将其重置为具有相同键和空集的字典。更好的方法是使用
defaultdict(set)
实例,并根据需要创建值。感谢您的帮助catch@Kartopukus当前位置你为什么要把整本字典都清理掉?您是否要清除集合?至少,将其重置为具有相同键和空集的字典。更好的方法是使用
defaultdict(set)
实例,并根据需要创建值。
truckgoals = [0] * tc