2015-02-04 7 views
2

У меня есть этот код, где я заполняю список defaultdict через цикл инкремента, однако проблема заключается в выходе. Я был списком, который содержит значения, которые читаются только и не перечислены, поскольку я должен записать его в файл CSV. Это цикл, чтобы заполнить списокНумерация номеров python defaultdict

m = defaultdict(list) 
for j in range (0, len(names)): 
with open(names[j]) as f: 

    reader = csv.reader(f, delimiter=',') 
    reader.next() 
    for row in reader: 
     for (i,v) in enumerate(row): 
      columns[i].append(v) 
    m[j]=max(columns[1], key=float) 

моя проблема является выход, который показан здесь

(0, '1.8768e-02'), (1, '2.4838e-02'), (2, '3.4145e-02'), (3, '4.6328e-02'), (4, '5.3245e-02'), (5, '6.0994e-02'), (6, '5.7532e-02'), (7, '6.2890e-02'), (8, '6.6898e-02'), (9, '8.2745e-02'), (10, '5.8015e-02') 

Как я мог изменить код, чтобы только значение, которое должно быть сохранено и не перечислить макс значение каждого файла?

+0

Что такое 'columns'? Столбцы –

+0

являются списком defaultdict, который читает значения полного столбца и позволяет программе находить максимальное значение этого столбца – brainboxryan

+0

. Это результат m – brainboxryan

ответ

0

Не уверен, что я полностью понимаю, что вы там делаете. Как я понимаю из вашего кода и комментариев, вы собираете значения из нескольких CSV-файлов в defaultdict m, а затем записываете их в другой CSV-файл.

Вы, кажется, сделали это с writer.writerow(m.items()). Таким образом, CSV-файл будет содержать ключи от dict, так как это именно то, что возвращает items: список всех пар (key, value) из словаря. Если вы хотите иметь только значения, вы можете использовать m.values(). Обратите внимание, что эти значения не гарантируются при заказе, но в вашем случае это работает, поскольку ключи только увеличивают число. Для того, чтобы убедиться, вы можете сортировать элементы и принимать только значение:

writer.writerow([v for (k,v) in sorted(m.items())]) 

Однако это также означает, что вам не нужен словарь, вообще, намного меньше defaultdict. Просто используйте простой список, чтобы собрать эти значения и записать этот список в файл.

m = [] 
# in your read-block: 
    m.append(max(columns[1], key=float)) 
# in your write block: 
    writer.writerow(m) 
Смежные вопросы