2017-04-17 1135 views
0

我試圖將以下字典保存爲csv。我的詞典內容的格式是:將字典保存爲CSV python

dict = {0:[u'ab', u'cd'], 1:[u'b'], 2: [u'Ge', u'TT'], 3: [u'Stas'], 4: [u'sap', u'd3', u'ch99']}. 

我的代碼是:

with open('Cr_pt.csv', 'wb') as f: 
     writer = csv.writer(f) 
     writer.writerow(dict.keys()) 
     writer.writerows(zip(*dict.values())). 

下面是我想在CSV保存格式。

1 2 3 4 
    ab Ge Stas sap 
    cd TT  d3 
       ch99 

但是我得到我的最終CSV從字典中只有很少的值,如:

1 2 3 4 
    ab Ge Stas sap 
+0

什麼是你想要的輸出格式,給出的字典輸入你提供的? –

+0

請參閱下面的答案 –

回答

1

首先,您應該避免使用dict作爲變量名稱,因爲它會影響a built-in

手頭的問題很簡單,用​​來解決;

import pandas as pd 
df = pd.DataFrame.from_dict(dict, orient='index').T.to_csv('Cr_pt.csv', index=False) 

輸出:

$ cat Cr_pt.csv 
0,1,2,3,4 
ab,b,Ge,Stas,sap 
cd,,TT,,d3 
,,,,ch99 
0

這裏有一個解決方案,寫入到一個CSV文件直接不使用csv模塊並限定每一行與逗號,創建逗號分隔值的文件(CSV):

data = {0:[u'ab', u'cd'], 1:[u'b'], 2: [u'Ge', u'TT'], 3: [u'Stas'], 4: [u'sap', u'd3', u'ch99']} 
delimiter = "," 

with open('data.csv', 'w') as data_file: 
    keys = [str(key) for key in data.keys()] 
    values = data.values() 
    max_values = max([len(value) for value in values]) 
    data_file.write(delimiter.join(keys) + "\n") 
    for line in range(0, max_values): 
     line_values = [] 
     for key in keys: 
      try: 
       line_values.append(data[int(key)][line]) 
      except: 
       line_values.append("") 
     data_file.write(delimiter.join(line_values) + "\n") 

輸出:

0,1,2,3,4 
ab,b,Ge,Stas,sap 
cd,,TT,,d3 
,,,,ch99 

在這種格式中,從文件讀取數據到另一個腳本會更容易,因爲這些值只能用逗號分隔,而不能用可變長度的空格分隔。