我想从同一个csv文件构建两个非常相似的字典(一个映射行[0]到行[5],一个从行[0]到行[6]。出于某种原因,我只能构建一个无论我先运行这两行中的哪一行,字典都存在并完全符合我的要求。另一行是空的。不知道出了什么问题。
mydict = {row[0]:row[5] for row in csv.reader(g)}
mydict1 = {row[0]:row[6] for row in csv.reader(g)}
我正在使用python 3,并尝试更改字典名称和其他一些东西。
答案 0 :(得分:3)
您不能在不将文件重新开始的情况下两次迭代文件。这样做也不是很有效率;最好不要在这里使用字典理解:
mydict1, mydict2 = {}, {}
for row in csv.reader(g):
mydict1[row[0]] = row[5]
mydict2[row[0]] = row[6]
如果您真的坚持,可以使用file.seek(0)
将文件指针放回到开头;你不需要在这里重新创建阅读器:
reader = csv.reader(g)
mydict1 = {row[0]:row[5] for row in reader}
g.seek(0)
mydict2 = {row[0]:row[6] for row in reader}