Python,字典到表并输出到csv文件

时间:2014-06-07 09:27:07

标签: python csv

我在python中编程

我的列表如下:

{'Net_rec': [403548, 403548, 403548], 'time': [1, 2, 3], 'disk_write': [219L, 219L, 219L], 'disk_read': [32904L, 32904L, 32904L], 'memory': [104468, 104468, 104468], 'cpu': [0.0, 0.0, 0.0], 'Net_sent': [36384, 36384, 36384]}

我需要将此列表输出到csv文件并获取如下表所示的列表:

time   cpu   memory  disk_read   disk_write   net_send   net_recv

以及每个列名称下方的数据。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中指出的那样,您拥有的数据是dict,而不是list。您可以转换数据以构建列表列表,以便每个子列表都包含键和值。

即:

[
    ['Net_rec', 403548, 403548, 403548], 
    ['time', 1, 2, 3], 
    ['disk_write', 219L, 219L, 219L], 
    ['disk_read', 32904L, 32904L, 32904L], 
    ['memory', 104468, 104468, 104468], 
    ['cpu', 0.0, 0.0, 0.0], 
    ['Net_sent', 36384, 36384, 36384]
]

然后使用izip会为您提供所需内容。

代码(假设data有您的输入词典:

from itertools import izip

transformed_data = []
for k, v in data.items():
    new_list = [k]
    new_list.extend(v)
    transformed_data.append(new_list)

print list(izip(*transformed_data)

这给出了:

[
    ('Net_rec', 'time', 'disk_write', 'disk_read', 'memory', 'cpu', 'Net_sent'), 
    (403548, 1, 219L, 32904L, 104468, 0.0, 36384), 
    (403548, 2, 219L, 32904L, 104468, 0.0, 36384), 
    (403548, 3, 219L, 32904L, 104468, 0.0, 36384)
]

探索csv模块的writerow方法,将上述输出写出到csv文件中。