2016-11-10 35 views
0

,我有以下數據的Python:印刷字典CSV,在新的一行中的鍵值

{'index': [1, 2, 3], 'similar': [[0, 2], [1, 2], [2, 1]], 'markets': [['A', 'C'], ['B', 'C'], ['A', 'B']]} 

,我想將它打印到CSV文件如下:

index similar markets 
1  [0,2] ['A','C'] 
2  [1,2] ['B','C'] 
3  [2,1] ['A','B'] 
目前

我的代碼如下:

with open('mycsvfile.csv', 'wb') as f: # Just use 'w' mode in 3.x 
    w = csv.DictWriter(f, a.keys()) 
    w.writeheader() 
    w.writerow(a) 

和它打印:

index    similair      markets 
[1, 2, 3] [[0, 2], [1, 2], [2, 1]] [['A', 'C'], ['B', 'C'], ['A', 'B']] 
+1

爲什麼你* C * omma * S * eparated * V *線索文件不分隔它的值s用逗號?你爲什麼要將列表存儲在CSV中?您確定您瞭解CSV是什麼以及它們的用途?這個任務似乎更適合JSON。 –

回答

3
import csv 

a = {'index': [1, 2, 3], 'similar': [[0, 2], [1, 2], [2, 1]], 'markets': [['A', 'C'], ['B', 'C'], ['A', 'B']]} 
keys = ['index', 'similar', 'markets'] 

with open('mycsvfile.csv', 'wb') as f: # Just use 'w' mode in 3.x 
    w = csv.writer(f) 
    w.writerow(keys) 
    w.writerows(zip(*[a[key] for key in keys])) 

CSV文件:

index,similar,markets 
1,"[0, 2]","['A', 'C']" 
2,"[1, 2]","['B', 'C']" 
3,"[2, 1]","['A', 'B']" 
+2

如果更改的值,a.keys()列表將以不同的順序返回! – Sri

2

可以使用pandas庫:

import pandas as pd 

x = {'index': [1, 2, 3], 'similar': [[0, 2], [1, 2], [2, 1]], 'markets': [['A', 'C'], ['B', 'C'], ['A', 'B']]} 

x = pd.DataFrame(x) 
x.to_csv('mycsvfile.csv', index = False) 

的CSV將是:

index,markets,similar 
1,"['A', 'C']","[0, 2]" 
2,"['B', 'C']","[1, 2]" 
3,"['A', 'B']","[2, 1]"