python - 第一次迭代后内部 for 循环被忽略,外部 for 循环工作得很好
问题描述
我有一个程序需要读取一个名为 .csv 的 CSV 文件PartsList.csv
。它查看第一列,将它与在这段代码运行之前创建的字典进行比较,如果第一列匹配它,它将从比较的键值对中获取值,将其用作键在字典中catd{}
并将值设置为空元组。然后它把空元组,转换成一个列表放入变量中holder
,第二列中的值被附加到列表中,并被转换回元组作为前面提到的键的值。但是,我遇到的问题是,在迭代一次之后,它完全忽略了内部 for 循环。它生成了我需要它制作的键,但由于内部 for 循环被忽略,它不会为它生成值。我不知道问题是什么,所以任何帮助表示赞赏。
以下是相关代码:
md = {} # This is the mentioned dictionary. The values share names with the first column of the CSV.
catd = {}
itemd = {}
holder = ()
with open('PartsList.csv') as csv_file:
mct = 1
act = 1
csv_reader = csv.reader(csv_file, delimiter=',')
print(len(md))
for x in range(0, len(md)):
line_count = 0
catd[str(md["MCat{0}".format(mct)])] = ()
for row in csv_reader:
if md['MCat{0}'.format(mct)] == row[0]:
holder = list(catd[str(md["MCat{0}".format(mct)])])
holder.append(str(row[1]))
catd[str(md['MCat{0}'.format(mct)])] = tuple(holder)
print(catd)
print(row[1])
else:
line_count += 1
holder = ()
mct += 1
print(x)
print(catd)
感谢您的帮助!
解决方案
正如@0x5453 提到的,问题已经解决,使用csv_file.seek(0)
将起点重置为起点,停止迭代器csv_file
为空的问题。
推荐阅读
- c# - 强制 Json 属性合并到列表/数组中
- flume-ng - 配置具有多个通道的水槽时数据通道锁定错误
- python - 安装 pip 包时出现错误 1 (pycrypto)
- neo4j - 如何使用节点和关系获取模式变量(如果存在)
- python - 有没有办法用 Scrapy 和 Python 为不包含该节点的特定类放置一个空白条目来代替节点值
- android - 在 Android 上的视图模型中使用 Dagger 2 单例
- android - 用 MySQL 扑动无限滚动视图
- mysql - 如果 NULL 值在列中可用,则查询条件
- qliksense - enigma.js 图表使用最新版本
- javascript - 将值从 json 文件传输到 vue2 谷歌地图标记