【问题标题】:Count Iterator only Appending final count value仅计数迭代器附加最终计数值
【发布时间】:2018-03-27 19:54:06
【问题描述】:

我有一个循环,它在一个用 BeautifulSoup 解析的 xml 文件中分配字符串

count = 0
for i in oosASINS:

 sku = str(i)
 message.sku.string = sku
 message.quantity.string = "0"
 stringnum = str(count)
 message.messageid.string = stringnum    
 messages.append(message)
 count +=1

它应该创建一个文档,其中分配给每个新消息集的消息 id 由一个(0,1,2...等)迭代,但它只附加 1-最终计数值,所以我得到(65,65,65...),其中最终计数值为 66。

我对此感到困惑,因为直到前一个计数变量被分配为 messageid 之后计数才会增加,但它总是输出 65

【问题讨论】:

  • 重复使用经典的message 的相同引用。在循环中实例化一个新的 message 对象

标签: python python-3.x loops counter


【解决方案1】:

因为您没有在循环中创建另一个 message 实例,因为

messages.append(message)

您的 messages 列表包含对 message 对象的 65 次相同引用,包含您分配给它的最后一个值。

在不知道message 是如何创建的情况下,我可以建议您这样做:

messages.append(copy.deepcopy(message))

但最好的方法是在循环中创建一个新的message

【讨论】:

  • 我最终不得不重写代码以生成新的“消息”,因为它最初是硬编码到软件中的。不过在那之后它起作用了。
【解决方案2】:

您的循环中似乎需要一个新的消息实例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    相关资源
    最近更新 更多