2016-12-15 1 views
-1

Я делаю программу для класса, и наш учитель дал нам функцию csv.DictReader для использования, не объясняя это. Это просто часть более крупной программы. Я пытаюсь прочитать таблицу данных погоды. Он имеет несколько столбцов с именем TemperatureF, VisibilityMPH и т. Д. Мне нужно прочитать в одном столбце электронной таблицы и поместить его значения в список в словарь с ключом, являющимся именем столбца. Я сделал это, однако, когда я пытаюсь выполнить цикл и делать это для второго столбца, мой список не заполняется. Вот мой код и вывод.Как использовать csv.DictReader

import csv 

def read_file(filename, col_list): 
    with open(filename, 'r') as f: 
     reader = csv.DictReader(f) 

     final_dict = {} 
     x = 0 
     while x < len(col_list): 

      print 'X IS ' + str(x) 
      this_list = [] 

      print 'list before adding stuff: ' #test 

      print this_list #test 

      for row in reader: 
       this_list.append([row[col_list[x]]]) 

      print 'list after adding stuff' #test 

      print this_list #test 

      final_dict[col_list[x]] = this_list 

      x += 1 
     print final_dict 

    def main(): 
     read_file('weather.csv', ['VisibilityMPH', 'TemperatureF']) 


    if __name__ == "__main__": 
     main() 

Выход:

enter image description here

+0

Можете ли вы вставить текст _text_ в свой вопрос? – qxz

+0

Эта программа, как опубликовано, ничего не читает. –

+0

@qxz, я не знаю, как скопировать вывод линии cmd – Eric

ответ

0

То, что вы, вероятно, хотите, это:

import csv 

def read_file(filename, col_list): 
    with open(filename, 'r') as f: 
     reader = csv.DictReader(f) 

     final_dict = {} 
     x = 0 

     while x < len(col_list): 

      print 'X IS ' + str(x) 
      this_list = [] 

      print 'list before adding stuff: ' #test 

      print this_list #test 

      for row in reader: 
       this_list.append([row[col_list[x]]]) 

      print 'list after adding stuff' #test 

      print this_list #test 

      final_dict[col_list[x]] = this_list 

      x += 1 

     print final_dict 

def main(): 
    read_file('weather.csv', ['VisibilityMPH', 'TemperatureF']) 


if __name__ == "__main__": 
    main() 

Обратите внимание ваше время блок имеет неправильную отступа. Но фрагмент кода действительно может быть улучшен.

import csv 

def read_file(filename, col_list): 
    with open(filename, 'r') as f: 
     reader = csv.DictReader(f) 

     final_dict = { col_name: [] for col_name in col_list } 

     for row in reader: 
      for col_name in col_list: 
       final_dict[col_name].append(row[col_name]) 

     print final_dict 

def main(): 
    read_file('weather.csv', ['VisibilityMPH', 'TemperatureF']) 


if __name__ == "__main__": 
    main() 
Смежные вопросы