2011-12-15 118 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