2017-10-17 67 views
0

我有一个Python字典,如下所示:Python字典,以CSV所需格式

{ 
    key1: [value1, value2, value3, n], 
    key2: [value1, value2, value3, n], 
    key3: [value1, value2, value3, n], 
    key4: [value1, value2, value3, n] 
} 

我想在每行包含键为标题的格式,这些值写入csv文件和在该关键字下的相关值(逐行)。

+1

请出示您想要达到的CSV输出。 –

+4

使用'pd.DataFrame(your_dict).to_csv('file.csv')' – Zero

回答

1

也许pandas可以为您提供实现这一目标的一个更直接的方式,但如果你只是想依靠从标准库中的csv包,下面简单方法应该做的:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import csv 


data = { 
    'key1': ['value1', 'value2', 'value3', 'n'], 
    'key2': ['value1', 'value2', 'value3', 'n'], 
    'key3': ['value1', 'value2', 'value3', 'n'], 
    'key4': ['value1', 'value2', 'value3', 'n'] 
} 

header = data.keys() 
no_rows = len(data[list(header)[0]]) 

with open('out.csv', 'w', newline='') as csvfile: 
    csvwriter = csv.writer(csvfile, delimiter=',') 
    csvwriter.writerow(header) 
    for row in range(no_rows): 
     csvwriter.writerow([data[key][row] for key in header]) 

此结果在

key1,key2,key3,key4 
value1,value1,value1,value1 
value2,value2,value2,value2 
value3,value3,value3,value3 
n,n,n,n 

希望这有助于!

编辑

由于这是目前公认的答案,我觉得我应该补充一点,pandas.DataFrame.to_csv确实提供了实现这一目标的更直接的方式,在其他的答案中提到:

import pandas as pd 

pd.DataFrame(data).to_csv('out.csv', index=False) 

产生与上面相同的输出(可能使用不同的行终止符,具体取决于您的系统)。

2

pandas提供了一个非常简单的解决问题的方法 -

import pandas as pd 
df = pd.DataFrame({ 
    'key1': ['value1', 'value2', 'value3', 'n'], 
    'key2': ['value1', 'value2', 'value3', 'n'], 
    'key3': ['value1', 'value2', 'value3', 'n'], 
    'key4': ['value1', 'value2', 'value3', 'n'] 
}) 
df.to_csv('/path/to/file')