按正确的顺序将dict写入csv文件

时间:2016-05-13 12:53:10

标签: python csv dictionary

我有这样的字典:

{
'col1': [1, 2, 3],
'col2': [4, 5, 6],
'col3' : [7, 8, 9]
}

我想要一个像

这样的csv
col1;col2;col3
1;4;7
2;5;8
3;6;9

我尝试使用for循环,但是没有成功以正确的顺序写入值。

3 个答案:

答案 0 :(得分:2)

STH。这样应该有效:

BindingList<DataItem> DataItems

答案 1 :(得分:0)

这里的关键是转换

data = {
'col1': [1, 2, 3],
'col2': [4, 5, 6],
'col3' : [7, 8, 9]
}

进入行列表:

[(1, 4, 7), (2, 5, 8), (3, 6, 9)]

我们知道这个表达式会得到一个列列表:

header = ['col1', 'col2', 'col3']
[data[h] for h in header]  # [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

如果我们将它们拼接在一起,那么我们将得到我们想要的东西:

zip(*(data[h] for h in header))  # [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

这样,我们就可以将数据写入CSV文件。把它们放在一起:

import csv

data = {
'col1': [1, 2, 3],
'col2': [4, 5, 6],
'col3' : [7, 8, 9]
}

header = ['col1', 'col2', 'col3']
with open('dict_to_csv_in_order.csv', 'wb') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    writer.writerows(zip(*(data[h] for h in header)))

答案 2 :(得分:0)

如果您使用pandas,则可以非常轻松地写入csv文件。

import pandas as pd
data = {
    'col1': [1, 2, 3],
    'col2': [4, 5, 6],
    'col3' : [7, 8, 9]
}
df = pd.DataFrame(data, columns=['col1', 'col2', 'col3'])
df.to_csv('csv_file.csv', sep=';', index=False)