2011-12-15 71 views
0

以下代码旨在将csv中的一长串数字转储到stat_by_symbol [symbol]中,以便我可以使用每个符号作为关键字来调用数字列表。出于某种原因,代码似乎只适用于第一个符号。有人可以帮助我修复代码以按预期工作吗?非常感谢。Python列表故障

with open('zzdata.csv', 'rb') as f: 
    reader = csv.reader(f) 
    reader.next() 
    for symbol in symbols:#symbols in a list 
     stat = [] 
     for row in reader: 
      if symbol in row: 
       stat.append(row[8])#stat becomes long list of numbers 
     stat_by_symbol[symbol] = [stat] 

回答

3

问题是,你可以迭代reader一次(因此只是第一次符号匹配)。

试试这个:

stat_by_symbol = {} 
with open('zzdata.csv', 'rb') as f: 
    reader = csv.reader(f) 
    reader.next() 
    for row in reader: 
     for symbol in symbols:#symbols in a list 
      if symbol in row: 
       stat_by_symbol.setdefault(symbol, []).append(row[8]) 
+0

谢谢!我还需要遍历行[8]到行[27],使行[8]中的所有数字在位0,位于行1的行[9]中的所有数字等等。我试着添加:对于范围(8,28)中的我:append(row [i]),但是这个过程不会像我需要的那样分开数字列表。对此有何帮助? – johnjdc 2011-12-15 08:09:56