2015-06-05 3 views
0

У меня есть словарь, который выглядит следующим образом ...Как написать словарь с несколькими ключами, каждый с несколькими значениями в csv в Python?

cla_1results= {"Tom":[1,7,4],"Dunc":[3,9,4],"Jack":[1,3,5]} 

Я хочу написать этот словарь в формате CSV, так что в следующем формате

Не имеет репутацию размещать изображения но это было бы что-то вроде этого ...

Tom, 1, 7, 4 
Dunc 3, 9, 4 
Jack 1, 3, 5 

Ничего из того, что я пробовал, сработало. Мои недавние усилия ниже, но я настоящий новичок в Python и программировании в целом.

import csv 

cla_1results= {"Tom":[1,7,4],"Dunc":[3,9,4],"Jack":[1,3,5]} 
cla_2results = {"Jane":[1,7,4],"Lynda":[3,9,4],"Dave":[1,3,5]} 
cla_3results = {"Gemma":[1,7,4],"Steve":[3,9,4],"Jay":[1,3,5]} 

b = open ('test.csv','w') 
a = csv.writer(b) 
data = cla_1results= {"Tom":[1,7,4],"Dunc":[3,9,4],"Jack":[1,3,5]} 
a.writerows(data) 
b.close() 

, который, к сожалению, только дает мне:

T, o, m 
D, u, n, c 
J, a, c, k 

и т.д.

+0

Пожалуйста, покажите, что вы пытались – EdChum

+0

Я обновил этот вопрос, чтобы показать это теперь EdChum –

ответ

0

Один из многих способов сделать это:

import csv 

cla_1results = { 
    "Tom": [1, 7, 4], 
    "Dunc": [3, 9, 4], 
    "Jack": [1, 3, 5] 
} 

with open("test.csv", 'w+') as file: 
    writer = csv.writer(file) 

    for name in cla_1results: 
     writer.writerow([name, ] + [i for i in cla_1results[name]]) 
+0

Это прекрасно работает, спасибо! –

1

Это должно работать, вам просто необходим список для создания файла CSV, поэтому он может быть сгенерирован на лету, а также.

import csv 
cla_1results= {"Tom":[1,7,4],"Dunc":[3,9,4],"Jack":[1,3,5]} 
with open('test.csv', 'wb') as csvfile: 

     writer = csv.writer(csvfile, delimiter=',') 

     for key,value in cla_1results.iteritems(): 
       writer.writerow([key]+value) 
+0

Почему странные настройки для разделителя и 'quotchar'? Используйте значения по умолчанию! – alexis

+0

@alexis Действительный пункт, сделал редактирование, спасибо –

+0

Привет, как и внешний вид этого, но борясь с той же проблемой с этим и решением kezzos, iteritems() продолжает бросать ошибку атрибута? –

0

Вы можете использовать DataFrame.from_dict() classmethod конвертировать dict в DataFrame, а затем можно использовать to_csv для преобразования dataframe в CSV-файл. Я использовал header=False для снятия заголовков.

from pandas import DataFrame 

cla_1results = {"Tom": [1, 7, 4], "Dunc": [3, 9, 4], "Jack": [1, 3, 5]} 

df = DataFrame.from_dict(cla_1results, orient='index') 

print(df.to_csv(header=False)) 

Dunc,3,9,4 
Jack,1,3,5 
Tom,1,7,4 
+0

Спасибо, это здорово, но я пытаюсь сделать это без установки внешних модулей. –

0

Try:

import csv 

with open('test.csv', 'wb') as csvfile: 
    c = csv.writer(csvfile) 
    line = [] 
    for key, value in cla.iteritems(): 
     line.append(key) 
     for i in value: 
      line.append(i) 
     c.writerow(line) 
+0

Спасибо, я пробовал это и обновил строку, чтобы отразить мое собственное имя словаря, но я не понимаю, что «iteritems()», поскольку объект «dict» не имеет атрибута. Вероятно, быть. 'для ключа, значение в cla_1results.iteritems' –

+0

Я не понимаю, извините, он работает для меня с приведенным примером – kezzos

+0

Извиняется, что это была моя ошибка, я испортил называние dict –

0
data = {"Tom":[1,7,4],"Dunc":[3,9,4],"Jack":[1,3,5]} 
with open('test.csv', 'w') as f: 
    for k, vals in data.items(): 
     line = ','.join([k] + map(str, vals)) + '\n' 
     f.write(line)