【问题标题】:key pair array adding same value in loop python密钥对数组在循环python中添加相同的值
【发布时间】:2017-05-15 09:11:00
【问题描述】:

我在 for 循环中的数组中添加值,但它一次又一次地在循环中添加相同的值。 这是我的代码:

for document in activityData:
    activityInfo.append(document)
for document in activityInfo:
    actRegCount = actregM.countAppliedReg(str(document['_id']),timeInt)
    if (not document['owner'] in ownerIds) and (document['deleted']==0):
        ownerIds['a']=str(document['owner'])
        ownerIds['b']=actRegCount
        ownerIds['c']=0
    array.append(ownerIds)

for document in jobData:
    jobInfo.append(document)
for document in jobInfo:
    jobApplyCount = jobApplyM.countAppliedJob(str(document['_id']),timeInt)
    if (not document['owner'] in ownerIds) and (document['deleted']==0):
        ownerIds['a']=str(document['owner'])
        ownerIds['b']=0
        ownerIds['c']=str(jobApplyCount)
    array.append(ownerIds)

但它一次又一次地添加相同的值。

输出:

[{'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'},
 {'a': '55a646a1874183dc018b4567', 'b': 0, 'c': '0'}]

我是 python 新手,所以可能是一个愚蠢的错误。欢迎提出任何建议。

【问题讨论】:

  • 您的 array.append(ownerIds)if 声明之外。这意味着如果条件返回 false 的情况,它会将相同的值附加到数组中
  • 另外,您将document['owner'] 放入ownerIds['a']。那么,document['owner'] in ownerIds 不应该总是返回 false 吗?
  • @kuro thnkx 寻求帮助,但我无法理解您的最后评论。你能解释更多吗?

标签: python arrays for-loop


【解决方案1】:

append 中尝试copy 您的OwnerId(并将append 放入if):

import copy

for document in jobData:
    jobInfo.append(document)
for document in jobInfo:
    jobApplyCount = jobApplyM.countAppliedJob(str(document['_id']),timeInt)
    if (not document['owner'] in ownerIds) and (document['deleted']==0):
        ownerIds['a']=str(document['owner'])
        ownerIds['b']=0
        ownerIds['c']=str(jobApplyCount)
        array.append(copy.deepcopy(ownerIds))

【讨论】:

  • 感谢帮助。我不知道深拷贝。你能解释一下吗?
猜你喜欢
  • 2018-11-28
  • 1970-01-01
  • 2019-09-20
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多