将dict值分配给变量时出现问题

时间:2010-01-01 20:21:11

标签: python csv

我正在努力做一些必须是其中之一的事情'这是显而易见的我是一个白痴'的问题。我有一个csv文件,我想读入并用于创建单独的“表”。我有一个变量(RID),标志着一个新的'表'的开头。

当我完成操作每一行时,我无法使我的指示器变量(currentRow)前进。你可以看到print语句,currentRow保持等于0 但是如果我在循环之外使用赋值语句,我可以随意更改currentRow的值。测试任务只是了解我在循环中的位置。

currentRow=0
test=0
theTables=defaultdict(list)
for line in csv.DictReader(open(r'c:\temp\testread.csv')):
    newTableKey=line['CIK']+'-'+line['RDATE']+'-'+line['CDATE']+'-'+line['FNAME']+' '+line['TID']

    if line['RID']=='1':
        test+=1 # I can get here
        if currentRow>int(line['RID']):
            print 'got here'

            theTables[oldTableKey]=theList
            test+=1  # I cannot get here
        theList=[]
    theList.append(line)
    currrentRow=int(line['RID'])
    print currentRow  #this value always prints at 0
    print int(line['RID']) #this prints at the correct value
    oldTableKey=newTableKey

3 个答案:

答案 0 :(得分:7)

在行中:

currrentRow=int(line['RID'])

r中有三个 currrentRow。将它们减少到只有两个,事情应该有所改善。

答案 1 :(得分:0)

一种解决方案是在循环中的某处添加以下内容:

currentRow += 1

但是,更好的解决方案可能是使用可枚举:

for currentRow, line in csv.DictReader..:
    stuff

答案 2 :(得分:0)

在我看来,theTables[oldTableKey]=theList可以使用未初始化的oldTableKey值执行。{/ p>