'nearestzipcodes'是包含5个项目(键/值)的列表。我试图只取每个值并将其分配给account.nearestzip1到5.我猜的下面的代码不起作用,因为它为nearestzipcodes中的每个项目分配全部5个。
如何更正此循环?我只是在nearestzip的末尾添加+1并删除接下来的4个重复行吗?
for i in nearestzipcodes:
account.nearestzip1 = i.values()
account.nearestzip2 = i.values()
account.nearestzip3 = i.values()
account.nearestzip4 = i.values()
account.nearestzip5 = i.values()
答案 0 :(得分:0)
您可以使用setattr,如下所示:
for i,v in enumerate(nearestzipcodes,1):
setattr(account, 'nearestzip' + str(i), v.values())
然而,这是一个奇怪的设计选择。引起注意的真正问题是为什么不在account
内使用某种容器来保存nearestzip
?
虽然setattr应该直接服务于你的目的,但它的使用通常更多地保留用于动态属性访问不可避免的情况;它会产生额外的性能成本并使代码的可读性降低。只有你必须使用它。在我看来,您的情况正在为list
内的account
属性大喊大叫。您将通过索引获得相同的结果:
account.nearestzip[0]
account.nearestzip[1]
account.nearestzip[2]
...
答案 1 :(得分:0)
每个account.nearestzipcode是一个django formfield条目,所以我不知道如何用列表替换它。我很感激这方面的一个例子。
在任何情况下,由于列表中只有5个项目,我想我可以这样做:
account.nearestzip1 = nearestzipcodes[0]
account.nearestzip2 = nearestzipcodes[1]
account.nearestzip3 = nearestzipcodes[2]
account.nearestzip4 = nearestzipcodes[3]
account.nearestzip5 = nearestzipcodes[4]