2015-08-20 60 views
0

我有以下形式的數據:CSV文件從Python中的多個字典的列表?

{'count': '274', 'file_type': 'json', 'limit': '100000', observation_end': '9999-12-31', 'observation_start': '1776-07-04', 'observations': "[{'date': '1947-01-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '3.962'}, {'date': '1947-04-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.052'}, {'date': '1947-07-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.172'}, {'date': '1947-10-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.270'}, {'date': '1948-01-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.372'}, {'date': '1948-04-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.432'}, {'date': '1948-07-01', 'realtime_start': '2015-08-20', 'realtime_end': '2015-08-20', 'value': '4.521'}] 

我想從它創建CSV或Excel文件,以便不同的值出現在不同的行。例如數據1948-07-01價值4521.這是可能的和如何? 我嘗試以下操作:

writer = csv.writer(open('dict.csv', 'wb')) 
for key, value in mydict.items(): 
    writer.writerow([key, value]) 

但要包含列表的所有詞典中單列最後一行。

+0

請確保您的字典語法是正確的。 –

回答

0

您必須首先使用鍵編寫標題,然後編寫值。

考慮到所有的數據都有薩姆斯鍵的事實,下面的工作:

writer = csv.writer(open('dict.csv', 'wb')) 
# retrieve the first dict to write the csv header: 
header = data[0].keys() 
writer.writerow(header) 
# iterate over data: 
for data in datas: 
    writer.writerow(data.values()) 

一定要記得用collections.OrderedDict確保.keys.values方法返回的相同的順序。

1
import ast # since your observations seems to be a string 
a=your_dictionary 
observations=ast.literal_eval(a["observations"]) # this will convert this string to list 
headers=observations[0].keys() 
writer = csv.writer(open('dict.csv', 'wb')) 
writer.writerow(headers) # to make sure your headings are date,realtime_start etc 
for data in observations: 
    row=[data[header] for header in headers] #will create the row in same order as headers 
    writer.writerow(row) 
+0

謝謝@拉傑什。確實幫助很大。 –

+0

@Rajesh_Sharma - 請將其標記爲已回答,如果您覺得我已正確回答您的問題 –

相關問題