在python2中,如何将列表字典打印为列格式?

时间:2016-10-28 22:30:19

标签: python csv dictionary multiple-columns

我目前有一份列表字典。我试图将它们写入输出,使得每个字典键都是一列,每个相应的列表将填充该列,该列的每一行都是列表中的不同元素。我觉得这应该是一个简单的问题,但我似乎无法正确地绕过它,因为我采取的每种方法都会产生错误的输出。

所以我想尝试这样的事情:

{'name1': ['a', 'b', 'c'], 'name2': [f, m, n], 'name3':     [a, c, e]} 

打印出来像这样:

name1 <tab> name2 <tab> name3 <tab>...
a     <tab> f     <tab> a     <tab>...
b     <tab> m     <tab> c     <tab>...
c     <tab> n     <tab> e     <tab>...

以下是我编写的代码,它肯定没有正确执行...第一列总是以最多行填充,然后是第二列,依此类推:

outdict = {}
for name, mylist in newdict.iteritems():
   mylist = sorted(mylist)
   for x in range(0, len(mylist)):
      if x not in outdict:
         outdict[x] = []
      if x == 0:
         outdict[x].append(gene)
      else:
         outdict[x].append(mylist[x])

for a, b in outdict.iteritems():
   out = "\t".join(b)
   print out

有人建议这个问题已经回答here但是当我实现建议的代码时,它仍然没有产生正确的输出,实际上它将整个输出只放在两行中(字典键在一行中)行和第二行中的字典值。)

import csv
with open("test.tsv", "wb") as file:
   writer = csv.writer(file, delimiter='\t')
   writer.writerow(newdict.keys())
   for row in zip(*newdict.values()):
      writer.writerow(list(row))
      writer.writerow("\n")

最终更新/解决方案: 只是想让每个人都知道,即​​使这个问题被错误地标记为重复,用户指向我没有解决问题的代码,我最终能够使用Pandas很容易地解决问题(正如其他人建议我看到的那样) )。这是我使用的代码:

import pandas as pd 
dataframe1 = pd.DataFrame(dict([(k,pd.Series(v)) for k, v in newdict.iteritems()])) 
dataframe1.to_csv("testing.tsv", sep="\t")

这非常有效,我还了解到我也可以使用pandas直接导出到Excel格式。我期待着更加熟悉熊猫。谢谢!

0 个答案:

没有答案