2011-12-15 5 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, все числа из строки [9] на месте 1 и т. Д. Я попытался добавить: для i в диапазоне (8, 28): ... append (row [i]), но эта процедура не разделяет списки чисел, как мне нужно. Любая помощь по этому поводу? – johnjdc

+0

@johnjdc - обновите свой вопрос и добавьте лучший пример того, что вам нужно – eumiro

+0

Просто отправил новый вопрос: http://stackoverflow.com/questions/8517246/loop-to-append-multiple-lists-to-a-single -list-в-питон – johnjdc

Смежные вопросы