Python中CSV列表字典

Python中CSV列表字典,python,csv,Python,Csv,我目前有一本字典,它的值是列表 例如:{1:[12,13,14,15],2:[12,13,14,15],3:[12,13,14,15]}等等 我有20000个键,每个列表包含80个值 我正试图将其输出到CSV文件中,但使用Dictwriter时运气不佳。以下是我的部分代码: for i in range(0, 3): filetxt = "\\Level_3\\" + nonsbar[i] filedata = list(csv.reader(open(filetxt,'rb'

我目前有一本字典,它的值是列表

例如:
{1:[12,13,14,15],2:[12,13,14,15],3:[12,13,14,15]}
等等

我有20000个键,每个列表包含80个值

我正试图将其输出到CSV文件中,但使用Dictwriter时运气不佳。以下是我的部分代码:

for i in range(0, 3):

    filetxt = "\\Level_3\\" + nonsbar[i]
    filedata = list(csv.reader(open(filetxt,'rb'), delimiter='\t'));

    for j in range (1, len(filedata)):
        tempid = filedata[j][0]
        idind = tempid.index('|')
        geneid = tempid[idind+1:len(tempid)]
        genecount = filedata[j][1]
        nconn[geneid].append(genecount)


for keys in nconn.keys():
    nconn[keys] = zip(nconn[keys])

print "convert to table"
nkeys = nconn.keys()
filetxt = open('nonsmoke.csv', 'wb')
nonsmoketab = csv.DictWriter(filetxt, nkeys,delimiter=',')
nonsmoketab.writeheader()
nonsmoketab.writerow(nconn)
我得到的结果如下:

114787  114786  
[('161.00',), ('985.00',), ('68.00',)]  [('9.00',), ('19.00',), ('2.00',)]
我想要的是:

114787 114786   
161     9
985     19
68      2

我可以给你一个粗略的建议:从csv.DictWriter实现,覆盖方法
writerow(self,rowdict)
writerows(self,rowdicts)
,在这两个函数中,在
self的结果上添加循环?您可以使用
itertools.izip\u longest
执行此操作,例如:

from itertools import izip_longest
d = {1: [12, 13, 14, 15], 2: [16, 17, 18], 3: [19, 20, 21, 22]}
labels = d.keys()
rows = izip_longest(*d.values())
您可以使用
csv.writer
序列化回csv:

import StringIO
buf = StringIO.StringIO()
outf = csv.writer(buf)
outf.writerow(labels)
outf.writerows(rows)
print buf.getvalue()
# 1,2,3
# 12,16,19
# 13,17,20
# 14,18,21
# 15,,22

谢谢这很有效。出于好奇,是否有一种更有效的方法来处理所有这些数据,我想对一些bayes net使用python,但我必须首先对数据进行离散化。@user3131429您应该为一个单独的问题启动一个单独的线程,并对其进行详细描述。至少这是免费的:)而且只要你还在,它就会受到欢迎。标准免责声明,如果您发现答案有用并满足您的需求,请使用cosider。