迭代Python数组

2024-04-26 00:37:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在以下代码中有一个逻辑错误:

while count < 5:
    row = next(csv_f)
    if row[0] != currentID:
        userArray.append(Users(row[0]))
        currentID = row[0]
        count = count+1

    userArray[len(userArray)-1].addUsageData(row[1],row[3])

它在每个用户中循环,直到ID改变为止,总共做了五次。你知道吗

一切正常,但我从第[1]行获得的usage数组中的最后一个索引总是下一个userID块中的第一个索引。就好像执行if块时len(userArray)没有更新一样。你知道吗


Tags: csv代码lenifcount错误逻辑users
1条回答
网友
1楼 · 发布于 2024-04-26 00:37:23

最后一次row[0] != currentID时,count增量为5。这个 立即将您从while-loop中断,任何后续行之前 在csv_f中进行处理。如果addUsageData正在累积数据,这就是为什么最后的user只有一行的数据。你知道吗

您可以使用^{}^{}来解决此问题:

import itertools as IT
import operator

userArray = []
for currentID, grp in IT.islice(IT.groupby(csv_f, key=operator.itemgetter(0)), 5):
    user = Users(currentID)
    userArray.append(user)
    for row in grp:
        user.addUsageData(row[1], row[3])

相关问题 更多 >