2017-10-20 25 views
1

我有一个简单的问题。我正在使用此代码来存储csv文件中的词典词典。我如何更改存储字典从行到列使用Python的类型

data = dataA,dataB, dataC, dataD 
w = csv.writer(open("test.csv", "w")) 
for x in data: 
    for field, possible_values in x.items(): 
     print(field, possible_values) 
     w.writerow([field, possible_values]) 

我在csv中获得的存储值存储在行中,但我希望它们存储为列。

我的实际结果CSV:

name: Alex 
Old: 22 

我的CSV目标应该是这样的:

Name Old 
Alex 22 

我怎样才能改变呢?

UPDATE1:

线索是for key in x.keys()。经过几个小时的努力,我更新了我的代码,它比以前更好,但我仍然有一个小问题,在存储所有值和关键字x.keys()和y.values() 。我的csv文件dictioanries的

if not os.path.isfile(filename): 
    outfile = open(filename, "w") 
    #outfile.write("#Sequence,,,,") 
    for x in data: 
     print(x.keys()) 
     for key in x.keys(): 
      print(key) 
      store_key= key + "," 
      outfile = open(filename, "a") 
      outfile.write(store_key) 
      outfile.close() 


    for y in data: 
     print(y.values()) 
     for value in y.values(): 
      print(value) 
      store_value = value + ","  
      outfile = open(filename, "a") 
      outfile.write(store_value) 
      outfile.close 

现在我需要与键和值之间的“\ n”也许单独拿到钥匙的线下的值OD一阳指。

任何帮助不胜感激。

+0

发布多字典的预期输出 – RomanPerekhrest

回答

0

如果您尝试访问和写入文件,这会减慢您的代码。将输出文本保存为一个字符串,删除最后一个逗号(,),并在该字符串的末尾添加换行符。它会加快您的代码,并添加新行。您也可以为回合秒做同样的事情。

line = "" 
for x in data: 
    for key in x.keys(): 
     line += key + "," 

line = line[:-1]+"\n" # Delete last character and add new line 
outfile = open(filename, "a") 
outfile.write(line) 
outfile.close() 
+0

,因为我需要我不能使用功能在csv文件中存储disionaries的列表yithout []和'' for x in data: outfile = open(filename,“a”) outfile.write(str(x.keys())) outfile.close ) 现在我得到了csv文件中的所有字典的问题,因为我使用str()。 当我不使用str()我得到一个错误,yrite参数必须是str而不是dic_keys – AhmyOhlin

+0

@AmymyOhlin你可以将你的期望结果添加到你的问题中:data = [{“name”:“Alex”,“age”:“22”,“sex”:“male”}, {“name”:“Alice”,“age”:“19”,“sex”:“female”}]' – Alperen

+0

如果你坚持使用第一个代码并使用'w.writerow(x.keys())' @Dustin说,你不必使用'str()'。使用我以前评论的数据。你会看到,它的工作原理。 – Alperen

0

您可以编写一行字典键,然后写一行值。

for x in data: 
    w.writerow(x.keys()) 
    w.writerow(x.values()) 
+0

感谢您的回答。你的小费工作,但我得到了一列中的所有实体。我的目标是,下一个实体应该写在下一列。 名称 亚历 老 ------------ 名老 亚历克斯22 我的目标是: 名老 亚历克斯22 – AhmyOhlin

相关问题