【发布时间】:2014-06-02 02:33:24
【问题描述】:
我的问题来自一个更大的程序,但为了这个问题,我缩小并显着简化了具体问题。
我使用 dictreader 方法从 csv 文件创建字典。我想循环通过字典打印出它的内容,我可以,但我想多次这样做。
test.csv 的内容只是一列数字 1-3 和一个名为 Number 的标题行。
GetData 是一个类,其中包含我编写的 create_dict() 方法,它使用 csv.dictreader 从 test.csv 创建并返回字典
我的代码如下:
dictionary = GetData('test.csv').create_dict()
for i in range(5):
print("outer loop")
for row in dictionary:
print(row['Number'])
class GetData:
def __init__(self, file):
self._name = file
def create_dict(self):
data = csv.DictReader(open(self._name, 'r'), delimiter=",")
return data
输出如下:
outer loop
1
2
3
outer loop
outer loop
outer loop
outer loop
我想要的输出是:
outer loop
1
2
3
outer loop
1
2
3
outer loop
1
2
3
outer loop
1
2
3
outer loop
1
2
3
有谁知道为什么在 Python 中会发生这种情况?
【问题讨论】:
-
如果您的代码中的
print(dictionary)是生成器,还是实际的字典?可能dict(GetData('test.csv').create_dict())如果在迭代过程中使用了前者 - 生成器表达式,而实际字典则不会。 -
print(dictionary)的输出是<csv.DictReader object at 0x0000000002223278>我想这意味着我实际上还没有创建字典
标签: python csv dictionary