Python 如何添加+;1到for循环中的变量名?

Python 如何添加+;1到for循环中的变量名?,python,django,Python,Django,“nearestzipcodes”是一个包含5项(一个键/值)的列表。我试图只取每个值并将其分配给account.nearestzip1到5。我猜下面的代码不起作用,因为它每次为最接近的ZipCodes中的每个项分配全部5 如何为循环更正此错误?我是否只需在nearestzip的末尾添加+1,然后删除接下来的4个重复行 for i in nearestzipcodes: account.nearestzip1 = i.values() account.nearestzip2 =

“nearestzipcodes”是一个包含5项(一个键/值)的列表。我试图只取每个值并将其分配给account.nearestzip1到5。我猜下面的代码不起作用,因为它每次为最接近的ZipCodes中的每个项分配全部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()

您可以使用setattr,如下所示:

for i,v in enumerate(nearestzipcodes,1):
     setattr(account, 'nearestzip' + str(i), v.values())
然而,这是一个奇怪的设计选择。真正值得注意的问题是,为什么不在
帐户
内使用某种容器来存放
最接近的邮政编码

虽然setattr应该直接为您服务,但它的使用通常更多地保留在动态属性访问不可避免的情况下;它会带来额外的性能成本,并降低代码的可读性。只有在你必须的时候才使用它。在我看来,您的情况需要在
帐户
中设置
列表
属性。通过索引,您将获得相同的结果:

account.nearestzip[0]
account.nearestzip[1]
account.nearestzip[2]
...

每个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]

用一个列表替换account.nearestzip1-5。就像在我的django模型中放一个列表一样?@donnaloia我对django不熟悉,也不能真正为你提供课程建议。如果这些属性以某种方式是API的一部分,那么我想您可以求助于
setattr
。你必须打那个电话。