gpt4 book ai didi

python - For循环问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:13:15 25 4
gpt4 key购买 nike

我使用的是 Python 3.2 版。有以下代码:

for row2 in reader2:
for row1 in reader1:
if row1['identification_column'] == row2['identification_column']:
row2['updated_col'] = row1['updated_col']
writer.writerow(row2)

reader1 是一个 csv.DictReader 对象,如下所示:

    identification_column,type

1, bike
2, guitar
3, drums
4, airplane
5, computer

reader2 与 reader1 类似,只是文件更长更全面。

问题是这样的:

我运行了所有的内循环,如果程序没有找到匹配项,它就不会写入该行,然后像我想象的那样递增外循环。它只是停止。最初它给我一个错误,直到我读到 a post here有人建议在作者声明中添加“extrasaction = 'ignore'”。但这并没有解决我的问题。

对于修复此逻辑的任何反馈,我将不胜感激。在我看来,将发生以下情况:

A) 如果内层循环没有从外层循环中找到有问题的值,程序输出外层循环中的行,没有任何变化

B) 如果内层循环具有外层循环正在迭代的精确值,更改行中其中一列的值,然后输出该行

我可以看到,程序只是在内循环的第一次迭代后停止,但我不明白为什么会这样。

最佳答案

reader1reader2 是文件对象(包装在 csv DictReader 中)。这些是只能读取一次的迭代器(直到您到达文件末尾),因此下一个 for 循环无事可做。

解决方案:

将文件读入列表并使用它来刷新 DictReader:

read_1 = myfile1.readlines()
for row2 in reader2:
reader1 = csv.DictReader(read_1)
for row1 in reader1:
# etc.

更好的是,将该 csv 文件读入字典列表一次 - 这应该更快:

reader1 = list(csv.DictReader(myfile))
for row2 in reader2:
for row1 in reader1:
# etc.

关于python - For循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com