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